نمایش نتایج 1 تا 4 از 4

نام تاپیک: bitmap

  1. #1

    Question bitmap

    بازهم سلام
    من به صورت زیر یه پروژه MFCساختم :(VSTDIO2008.NET)
    Aplication type: SingleDocument
    Compound document support: none
    Nonlocalized strings:File extension:bmp
    Database support: none
    Generated classes: Base class: CView
    حالا وقتی که فایل رو openمیکنم ، اسم Form ،اسم فایل bmp رو نشون میده ولی خودفایل رو نشون نمیده!
    اگر ممکن هست من رو step by step راهنمایی کنید چون تازه کارم و نمیدونم توابعی که شما گفتید رو کجا باید استفاده کنم
    درضمن من این برنامه رو نوشتم : (MFC)

    viod CsetpixelView::OnDrow (CDC* pDC)
    {
    using namespace std;
    CstpixelDoc*pDC=GetDocument ();
    ASSERT_VALID (pDoc);
    int pixcolor;
    ofstream fout ("c:\\data.txt");
    for (int i=0;i<32;i++)
    {
    for (j=0;j<32;j++)
    {
    pDC->Arc (0,0,32,32,0,0,32,32);
    pixcolor = pDC->GetPixel (j,i);
    fout << !(pixcolor) << ",";
    }
    fout << "\n";
    }
    }
    اگر کپی بشه تو VSTDIO درست خونده میشه ، فایل های هدر هم به شکل زیر تغییر کردند :

    #include "stdafx.h"
    #include <fstream>
    #include <iostream>
    #include <stdio.h>
    #include <iomanip>
    #include "set pixel.h"
    #include "set pixelDoc.h"
    #include "set pixelView.h"
    _________________________________-
    حالا بعد از اجرای برنامه ، برنامه رو ببندید ، و فایل c:\data.txt رو باز کنید ، فونت سایز رو 1 انتخاب کنید .
    ----------------------------------------------
    این هدف کلی هستش ، من میخوام یه فایل bmp رو کاربر open کنه وautomatic برنامه این تبدیل رو انجام بده
    آخرین ویرایش به وسیله Nima_NF : پنج شنبه 09 آبان 1387 در 01:07 صبح دلیل: از تک کد استفاده کنید

  2. #2

    نقل قول: bitmap

    آقا نیما سلام
    اگر امکان داره کدزیرروبررسی کنید (OnDrow)
    void CsetpixelView::OnDraw(CDC* pDC)
    {
    using namespace std;
    CsetpixelDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    int pixcolor;
    ofstream fout ("c:\\data.txt");
    for (int i=0;i<32;i++)
    {
    for (int j=0;j<32;j++)
    {
    pDC->Arc (0,0,32,32,0,0,32,32);
    pixcolor=pDC->GetPixel (j,i);
    fout << !(pixcolor) << ",";
    }
    fout << "\n";
    }
    من میخوام بجای Arc عکسی که توسط کاربر open میشه به 0,1 تبدیل بشه
    لطفا کمکم کنید.

  3. #3

    نقل قول: bitmap

    لطفا از تگ code که با علامت # مشخص شده است استفاده کنید تا کدها قابل خواندن باشد.

    در تاپیک قبلی که ارسال کردید چند نمونه لینک معرفی کردم که جهت نمایش عکس بود، احتمالا بررسی نکردید!
    برای نمایش یک عکس می توانید به شکل زیر عمل کنید:

    void CMFC_t1View::OnDraw(CDC* pDC)
    {

    CMFC_t1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,L"C:\\pic.bmp",
    IMAGE_BITMAP,0,0,
    LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    CBitmap bmp;
    bmp.Attach(hBmp);

    // Get the size of the bitmap
    BITMAP bmpInfo;
    bmp.GetBitmap(&bmpInfo);

    CDC dcMemory;
    dcMemory.CreateCompatibleDC(pDC);

    // Select the bitmap into the in-memory DC
    CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);

    pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
    0, 0, SRCCOPY);

    //------------
    // Here write your getpixel codes
    COLORREF color = dcMemory.GetPixel(450,500);

    // if (color == 0) ... else ....
    //------------

    dcMemory.SelectObject(pOldBitmap);

    }
    - اگر خواستید که عکس در پنجره نمایش داده نشود و فقط اطلاعات bmp را دریافت کنید، فراخوانی تابع BitBlt را حذف کنید.
    - در خط بعد از آن قبل از SelectObject بعدی می توانید با GetPixel که در فوق مثال زده ام به راحتی با مختصات پیکسل مورد نظر در حافظه dcMemory ،اطلاعات را دریافت کنید.
    مثلا در خط بعدی آن همان فایل data.txt را باز کنید و با یک شرط که اگر color دریافتی مقدار 0 بود آنگاه همان صفر، اگر هم غیر صفر بود عدد 1 در فایل ذخیره شود.(برای عکس های سیاه و سفید)
    برای عکس های رنگی هم خودتان باید قانونی به همین شکل بنویسید.

    - ضمنا برای افزایش کارآیی اگر نمی خواهید عکس نمایش داده شود می توانید کدها را در OnInitDialog یا سایر قسمت ها که معمولا یک مرتبه فراخوانی می شوند مانند زمانی که کلید زده می شود فراخوانی کنید.
    آخرین ویرایش به وسیله Nima_NF : شنبه 11 آبان 1387 در 15:35 عصر

  4. #4
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    Question نقل قول: bitmap

    خوب حالا این کدها را در کدام قسمت MFC بنویسیم؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •