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

نام تاپیک: bitmap

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    نقل قول: 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 تبدیل بشه
    لطفا کمکم کنید.

  2. #2

    نقل قول: 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 در 16:35 عصر

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

    Question نقل قول: bitmap

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

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

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