دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 10 , از مجموع 11

موضوع: برنامه نویسی گرافیک در c و ++c

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #4
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    222
    Array

    پیش فرض پاسخ : برنامه نویسی گرافیک در c و ++c

    پیش نیاز این آموزش:
    - مطالعه دو لینک آموزشی در پست اول برای آشنایی با مفاهیم ساخت پنجره و پیام ها
    - استفاده از کامپایلر visual C++‎ 2005 یا بالاتر


    نحوه انجام:
    1) ابتدا به منوی new رفته و یک پروژه از نوع win32 project با نام "rect1" و مقادیر پیش فرض بسازید (دقت کنید که console نباشد).
    پروژه با چند فایل ساخته می شود، که ما با فایل rect1.cpp کار داریم.

    2) برای رسم یک مربع ساده به این شکل عمل کنید:
    در قسمت case و پیام WM_PAINT کار های گرافیکی در قسمت client یا همان قسمت سفید انجام می شود، دقت کنید که کد های گرافیکی باید مابین دو دستور BeginPaint و EndPaint نوشته شوند.

    برای شروع مربعی بدون رنگ رسم می کنیم، کد را به شکل زیر تغییر دهید:
    کد:
    کد PHP:
         case WM_PAINT:
            
    hdc BeginPaint(hWnd, &ps);
            
    // TODO: Add any drawing code here...

            
    Rectangle(hdc100100200200);  // Empty

            
    EndPaint(hWnd, &ps);
            break; 
    3) حال در کنار آن مربعی با یکی از رنگ های پیش فرض سیستم رسم می کنیم:
    کد:
    کد PHP:
         case WM_PAINT:
            
    hdc BeginPaint(hWnd, &ps);
            
    // TODO: Add any drawing code here...

            
    Rectangle(hdc100100200200);  // Empty

            
    SelectObject (hdcGetStockObject (LTGRAY_BRUSH)) ;
            
    Rectangle(hdc300100400200);  // Filled by light gray color    

            
    EndPaint(hWnd, &ps);
            break 
    ;
    در کد فوق با استفاده از دستور SelectObject یکی از اشیاء را مانند قلم ، مداد ، عکس و غیره را برای رنگ آمیزی و ترسیم می توانید انتخاب کنید. در این مورد ما با استفاده از تابع GetStockObject یکی از قلم های پیش فرض سیستم را انتخاب کردیم که خاکستری روشن هست. (سایر انواع : BLACK_BRUSH، HOLLOW_BRUSH ، WHITE_BRUSH ، BLACK_PEN و ....)


    4) برای ساختن یک brush یا قلم دلخواه (با رنگ دلخواه) به این شکل عمل می کنیم:

    - ابتدا قلم را در پیام WM_CREATE می سازیم (این پیام را خودتان در بخش case ها اضافه کنید )، هر چیزی که در بخش WM_CREATE نوشته شود در هنگام شروع برنامه قبل از هر چیزی اجرا می شود .

    - از تابع CreateSolidBrush و ماکرو RGB برای ساخت قلم و رنگ استفاده می کنیم.

    - hbrush از نوع HBRUSH باید قبل از switch تعریف شود و حتما static باشد چون فقط یک مرتبه در شروع برنامه مقدار دهی می شود.

    - وقتی خودمان قلمی درست می کنیم باید در انتهای برنامه فضای اختصاص داده شده به آن را آزاد کنیم پس در قسمت WM_DESTROY در هنگام بستن برنامه را فراخوانی DeleteObject می کنیم .

    - SelectObject آخر برای این است که همراه پس از انجام رسم ، قلم قبلی که پیش فرض سیستم بود انتخاب و آماده برای سایر موارد رسم بعدی شود.

    پس تابع به شکل زیر تغییر داده می شود:
    کد:
    کد PHP:
         mLPARAM lParam)
    {
        
    int wmIdwmEvent;
        
    PAINTSTRUCT ps;
        
    HDC hdc;
        static 
    HBRUSH    hbrushhbrushOld;  // must be static

        
    switch (message)
        {
        case 
    WM_CREATE:
            
    // Create a red brush
            
    hbrush CreateSolidBrush(RGB(25500));

            break;

        case 
    WM_COMMAND:
              
    // **...  I removed codes ... **
            
    break;

        case 
    WM_PAINT:
            
    hdc BeginPaint(hWnd, &ps);
            
    // TODO: Add any drawing code here...

            
    Rectangle(hdc100100200200);  // Empty

            
    SelectObject (hdcGetStockObject (LTGRAY_BRUSH)) ;
            
    Rectangle(hdc300100400200);  // Filled by light gray color    

              // Select the new brush and draw
            
    hbrushOld = (HBRUSH)SelectObject(hdchbrush);
            
    Rectangle(hdc500100600200);  // Filled by light gray color
            
    SelectObject(hdchbrushOld);  // select old brush
        
            
    EndPaint(hWnd, &ps);
            break;

        case 
    WM_DESTROY:
            
    PostQuitMessage(0);
            
    DeleteObject(hbrush);

            break;
        default:
            return 
    DefWindowProc(hWndmessagewParamlParam);
        }
        return 
    0;

    5) سایر توابعی که می توانید از آن ها برای رسم اشکال استفاده کنید:
    Ellipse ، Polygon ، RoundRect ، Pie ، Chord ، Arc ، LineTo ، Polyline و ...
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  2. 2 کاربر از پست مفید آبجی سپاس کرده اند .


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 0
    آخرين نوشته: 15th March 2010, 12:42 AM
  2. دانلود: برترين برنامه هاي رايگان 1388
    توسط Victor007 در انجمن سایر نرم افزارها
    پاسخ ها: 0
    آخرين نوشته: 12th December 2009, 12:42 PM
  3. مقاله: تفاوتهاي برنامه ريزي استراتژيک در سازمانها
    توسط MR_Jentelman در انجمن مجموعه مدیریت اجرایی
    پاسخ ها: 0
    آخرين نوشته: 27th July 2009, 10:14 AM
  4. سنجش موفقيت برنامه ريزي فناوري اطلاعات
    توسط engeneer_19 در انجمن مباحث فناوری اطلاعات
    پاسخ ها: 0
    آخرين نوشته: 26th July 2009, 08:33 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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