امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ای پی آی برای برش فرم به شکل عکس
نویسنده پیام
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #1
ای پی آی برای برش فرم به شکل عکس
دو تا سؤال:
سؤال اول: یک Bitmap به عنوان عکس زمینه فرم قرار دادم و میخوام با استفاده از توابع API یک رنگ خاص را Transparent کنم. لطفا راهنمایی کنید.
یک OCX پیدا کردم ولی به چیزی غیر از سورس اطمینان ندارم.
یک سورس هم پیدا کردم که چون تمام عکس رو پیمایش میکرد، سرعتش پایین بود.
چیزی که من میخوام اینه: قبل از اجرا
[تصویر:  p0s4m.jpg]

بعد از اجرا
[تصویر:  24n03ft.jpg]

من دیدم که از BeginPath و EndPath برای برش فرم استفاده میشه و بینشون هم از TextOut
آیا تابعی برای رسم عکس هست که مثل TextOut عمل کنه و بین BeginPath و EndPath فراخوانیش کنیم؟
TransparentBlt که جواب نمیده.

سؤال دوم: اصلا از کجا بفهمیم که کدوم توابع بین BeginPath و EndPath عمل می کنند یا نه؟


(آخرین ویرایش در این ارسال: ۲۸-تير-۱۳۸۷, ۰۱:۰۲:۳۲، توسط mojtabamalaekeh.)
۲۷-تير-۱۳۸۷, ۲۳:۵۱:۵۷
ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #2
RE: ای پی آی برای برش فرم به شکل عکس
SetLayeredWindowAttributes

Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Dim Retval As Long

Private Sub Command1_Click()
Retval = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Retval = Retval Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Retval
SetLayeredWindowAttributes Me.hWnd, RGB(255, 0, 0), 0, LWA_COLORKEY
End Sub

میزان رای دشمن است!
[تصویر:  cff100.png]
۲۸-تير-۱۳۸۷, ۰۹:۵۴:۵۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mojtabamalaekeh
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #3
RE: ای پی آی برای برش فرم به شکل عکس
حرف نداشت علی آقا Clap
حتی قسمت هایی از Titlebar رو هم که شامل رنگ تعیین شده بودند پاک کرد.
خیلی حال کردم. سپسگزارم.


۲۸-تير-۱۳۸۷, ۲۲:۲۷:۰۵
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #4
RE: ای پی آی برای برش فرم به شکل عکس
بایستی از region و توابعی مثل CombineRgn و FillRgn وCreateEllipticRgn استفاده کنین
۲۸-تير-۱۳۸۷, ۲۲:۵۴:۱۰
وب سایت ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #5
RE: ای پی آی برای برش فرم به شکل عکس
lord_viper نوشته است:بایستی از region و توابعی مثل CombineRgn و FillRgn وCreateEllipticRgn استفاده کنین
نمونه کدی که از CombineRgn استفاده کرده بود تمام پیکسل های تصویر رو پیمایش می کرد و سرعتش پایین بود. من هم که خودم بلد نیستم از CombineRgn استفاده کنم.
SetLayeredWindowAttributes کارمو راه انداخت ولی بدم نمیاد کار با این سه تابع رو هم یاد بگیرم.


۲۹-تير-۱۳۸۷, ۱۲:۴۲:۱۸
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS