PDA

View Full Version : آموزش: حل مشکل ترنسپرنت نشدن لیبل روی عکس



arman_Delta2002
دوشنبه 05 تیر 1391, 18:38 عصر
سلام امروزم واستون یه آموزش مفید گزاشتم که خودتون یک لیبل رو دست میکنین واسه برنامه که عکس زیرش رو نشون بده بدون مشکل و در همه جای برنامه ازش استفاده میشه
خوب برای شورع به پروژتون یک userConrol اضافه کنین و داخلش این کد ها رو بنویسین


Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get

Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H20 ' Turn on WS_EX_TRANSPARENT
Return cp

End Get
End Property

بعد به فایل دیزاین یوزر کنترل رو باز کنین و نوع شیع رو از یوزر کنترول به label تقییر بدین
88725

'Inherits System.Windows.Forms.UserControl
Inherits System.Windows.Forms.Label

بعد از تغییر شیع 2 تا خطا رو سیستم شناسایی میکنه که پاکش کنین

Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font

سپس باید برین تو رویداد نیو لیبلتون به این صورت
88728
و این کد ها رو اضافه کنین

Me.SetStyle(ControlStyles.Opaque, True)
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)

خوب حالا یکبار پروژه رو بولید کنین و بعد شیع اضافه شده به تول بار رو بکشین روی فرمتون روی عکس میبینین که لیبل یه صورت پیش فرض ترنسپرنت هست

در ضمن یه دکمه خوشکل هست واسه تشکر کردن :قهقهه:

arash020
دوشنبه 05 تیر 1391, 23:37 عصر
سلام

کی مـــــــــــــیره ایـــــــــــــــــن همـــــــــــــــــــــــ ـــــــــه راهـــــــــــــو . . .

به صورت معمولی توی طراحی فرم هر لیبلی که میخوایم تصویر پشتیش نشون داده بشه
میریم توی خصوصیت backgrandcolor و روی گزینه trancparent که داره تنظیمش میکنیم.به همین راحتی!!!

arman_Delta2002
سه شنبه 06 تیر 1391, 08:28 صبح
سلام

کی مـــــــــــــیره ایـــــــــــــــــن همـــــــــــــــــــــــ ـــــــــه راهـــــــــــــو . . .

به صورت معمولی توی طراحی فرم هر لیبلی که میخوایم تصویر پشتیش نشون داده بشه
میریم توی خصوصیت backgrandcolor و روی گزینه trancparent که داره تنظیمش میکنیم.به همین راحتی!!!

این کارو انجام بده و لیبلت رو بنداز روی یه عکس !!
شما با این روش تو حالت دیزاین فرم هم بازم لبلتون ترنس پرنته اینم میشه یه جور باگ در VS در نظر گرفت.

roze_abi-r
سه شنبه 06 تیر 1391, 08:56 صبح
سلام

درسته، شاید این خاصیتی که دوستمون (ARMAN) گفتن یک نوع کاستی توی دات نت باشه. ولی باگ به حساب نمیاد.
شما میتونید با یک خط کد این امکان رو بدست بیارید

شما لیبل رو روی پیکچرباکس قرار میدین و این کد رو به رویداد لود فرمتون اضافه میکنید

با فرض اینکه نام لیبل Label1 و
نام پیکچرباکس PictureBox1 باشه


Label1.Parent=PictureBox1.Parent


امیدوارم کارتون راه بیافته

یا حق

arman_Delta2002
سه شنبه 06 تیر 1391, 10:37 صبح
حرف شما متین ولی من نظرم در حالت طراحی دات نت هست که در VB6 لیبل در حالت طراحی هم ترنسپرنت بود ولی بخواطر مشکل گرافکی دات نت که حتی باعث شده بیشتر اشیاء رو نشه راست چین کرد رو به این روش در دات نت حل شده درسته دردسر هایی داره ولی یک لیبل که در حالت طراحی هم ترنسپرنت است رو تحویل کاربر میده