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

نام تاپیک: طریقه Transparent کردن StaticText در VC

  1. #1

    طریقه Transparent کردن StaticText در VC

    سلام
    من یه دیالوگ دارم که یه Bitmap رو بعنوان Textture روش استفاده کردم، حالا وقتی یه label روش میذارم موقع اجرا Transparent نمیشه.........

    با تشکر

  2. #2
    سلام

    هنوز به پاسخ سوالتون نیاز دارید یا به جواب رسیدید ؟
    اگر نه، بگید گه براتون توضیح بدم.

  3. #3
    بگید گه براتون توضیح بدم.
    جواب رو برای من توضیح می دید؟ ممنون

  4. #4
    در win32 , از پیام WM_CTLCOLORDLG برای تغییر رنگ دیالوگ ها استفاده می کنیم و برای تغییر رنک هر نوع ابزاری که از نوع static باشند مثل Slider, static text و غیره از پیام WM_CTLCOLORSTATIC استفاده می کنیم که اگر handle یک brush رو در حالی که به یک Bool تغییر داده باشیم (cast) باعث می شه که از این به بعد رنگ control های static ما به رنگ برگشت داده شده تغییر پیدا کنه و اگر هم FALSE برگردانده شود تغییر رنگ صورت نمی گیرد و چون text های ما به طور پیش فرض دارای پشت زمینه می باشد از طریق SetBkMode آن را به حالت شفاف باید تغییر دهیم .
    سایر پیغام ها برای تغییر رنگ سایر اجزا که همگی با WM_CTLCOLOR شروع می شوند :
    • WM_CTLCOLORBTN
    • WM_CTLCOLOREDIT
    • WM_CTLCOLORDLG
    • WM_CTLCOLORLISTBOX
    • WM_CTLCOLORSCROLLBAR
    • WM_CTLCOLORSTATIC
    این procedure به عنوان یک نمونه برای دیالوگی هست که رنگش به خاکستری تغییر پیدا کرده:

    INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    HBRUSH graybrush;
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
    return (INT_PTR)TRUE;

    case WM_CTLCOLORSTATIC:
    SetBkMode ( (HDC)wParam, TRANSPARENT);
    graybrush = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
    return (BOOL)graybrush;

    case WM_CTLCOLORDLG:
    graybrush = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
    //SelectObject (wParam, GetStockObject(DKGRAY_BRUSH));
    return (INT_PTR)graybrush;

    case WM_COMMAND:
    if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    {
    EndDialog(hDlg, LOWORD(wParam));
    return (INT_PTR)TRUE;
    }
    break;

    }
    return (INT_PTR)TRUE;

    }


    برای اطلاعات پیاده سازی در MFC داخل MSDN به بخش WM_CTLCOLOR notification مراجعه کنید که اعمالی مشابه باید انجام شود و شامل یک مثال مفید هست که با قرار دادن یک IF می توانید فقط یک کنترل خواص را تغییر رنگ دهید زیرا این پیغام ها برای تک تک اجزا فرستاده می شوند.


    با تشکر

    آخرین ویرایش به وسیله Nima_NF : سه شنبه 30 بهمن 1386 در 01:14 صبح

  5. #5
    در مورد یک عکس به صورت پشت زمینه کار مشکل می شود و راحت نیست ( اما خوشبختانه برای یک عکس با اندازه کامل دیالوگ وکنترل های static text راحت است یعنی همان چیزی که در اکثر دیالوگ About نرم افزارها می بینید)
    در غیر این صورت باید کنترل های شما به صورت custom Draw یا OwnerDraw طراحی شود.

    توجه کنید که عکس را نباید با ابزار های طراحی دیالوگ اعمال کنید . یکی از روش ها به شکل زیر است :


    static HBITMAP hbm;
    ; static HBRUSH hbrush, hbrushOld

    case WM_INITDIALOG:
    hbm = LoadBitmap (hInst ,MAKEINTRESOURCE(IDB_BITMAP1) );
    hbrush = CreatePatternBrush(hbm);
    return (INT_PTR)TRUE;


    case WM_CTLCOLORSTATIC:
    SetBkMode ( (HDC)wParam, TRANSPARENT);
    return (BOOL)hbrush;

    case WM_CTLCOLORDLG:

    return (INT_PTR)hbrush;


    - ضمنا پاکسازی ها به عهده خودتون مثلا SetBkMode مجدد و یا در موقع بستن دیالوگ

    DeleteObject(hbrush);
    DeleteObject (hbm);


    آخرین ویرایش به وسیله Nima_NF : سه شنبه 30 بهمن 1386 در 01:13 صبح

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

    نقل قول: طریقه Transparent کردن StaticText در VC

    دوستان چرا همش به روش Win32 و GDI یاد می دید؟ مگه MFC در این زمینه کلاس نداره ؟
    من خودم دیدم که در این آدرس The Background Picture of a Dialog Box به راحتی یک لیوان آب توضیح داده اما من چون نمی دونم این کدها رو کجا بنویسم هییییچی متوجه نشدم. خنده نداره گریه داره
    اگر شما متوجه شدید به منم یاد بدید ترجمشم تو این آدرسه
    https://barnamenevis.org/showthread.p...8%B2%D8%B4-MFC
    آخرین ویرایش به وسیله complexcoding : دوشنبه 13 شهریور 1391 در 11:47 صبح

تاپیک های مشابه

  1. transparent کردن قسمتی از فرم
    نوشته شده توسط specialim در بخش VB.NET
    پاسخ: 7
    آخرین پست: دوشنبه 10 دی 1386, 11:26 صبح
  2. مشکل transparent کردن ایمیج در دلفی
    نوشته شده توسط McMilad در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: یک شنبه 23 مرداد 1384, 13:34 عصر
  3. تکس باکس Transparent
    نوشته شده توسط Payam Moradi در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: سه شنبه 10 خرداد 1384, 10:42 صبح
  4. Transparent کردن کنترلی که این خاصیت را ندارد
    نوشته شده توسط niloufar در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: یک شنبه 18 اردیبهشت 1384, 17:15 عصر

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

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