PDA

View Full Version : سوال: نحوه درج عکس در button بدون حاشبه



ehsan7007
جمعه 06 مرداد 1391, 17:09 عصر
سلام دوستان.
من می خوام برای باتنم یک Imagebackground با تصویر png قرار بدم.از اونجایی که تصویرم ایکون هست نمی خوام حاشیه ی مربعی باتن رو داسته باشه.
درست به شکل ایکون های دسکناپ که حاشیه ی مربعی ندارند.
کسی میتونه راهنمایم کنه؟

harani
جمعه 06 مرداد 1391, 17:45 عصر
ببین این خوبه :

90309

ehsan7007
جمعه 06 مرداد 1391, 20:40 عصر
این کار رو هم کردم ، اما منظور من رو درست نفهمیدید.
می خوام باتن مثل یک ایکون باشه و مربعی و مرزدار نباشه.

harani
جمعه 06 مرداد 1391, 21:53 عصر
فایل زیپی که ضمیمه کردم دقیقاً جواب سوالتونه .

مگه چنین چیزی نمیخواین ؟؟؟


90319

ehsan7007
جمعه 06 مرداد 1391, 22:33 عصر
تقریبا ، اخه از کجا معلوم که فقط باتن رو دایره ای نکنه؟

harani
جمعه 06 مرداد 1391, 22:38 عصر
من چیزی رو که سوال کرده بودید جواب دادم . شما هم برای باتن سوال کردید . البته به احتمال غریب به یقین برای کنترلهای دیگه ام کاربرد دارد .

ehsan7007
جمعه 06 مرداد 1391, 22:43 عصر
نه ، بازهم منظورم رو نفهمیدید.
ازشما می پرسم این کد شکل باتن رو دایره ای می کنه ، یا تصویرتون دایره است؟

the king
جمعه 06 مرداد 1391, 22:55 عصر
این کار رو هم کردم ، اما منظور من رو درست نفهمیدید.
می خوام باتن مثل یک ایکون باشه و مربعی و مرزدار نباشه.

اون که دیگه Button نیست، اسمش MyButton ئه، ساختن اش کمتر از یک ساعت وقت می بره.
یک تصویر به عنوان Image بهش میدید و تمام.

90325

harani
شنبه 07 مرداد 1391, 00:43 صبح
نه ، بازهم منظورم رو نفهمیدید.
ازشما می پرسم این کد شکل باتن رو دایره ای می کنه ، یا تصویرتون دایره است؟

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

ehsan7007
شنبه 07 مرداد 1391, 19:52 عصر
فایلی که جناب the king قرار دادتد دقیقا همون چیزیبود که میگم . ازشون ممنونم.
فقط اگر میشه یه مقدار در باره ی ساخنتش توضیح بدن ممنون می شم.

the king
شنبه 07 مرداد 1391, 20:17 عصر
فایلی که جناب the king قرار دادتد دقیقا همون چیزیبود که میگم . ازشون ممنونم.
فقط اگر میشه یه مقدار در باره ی ساخنتش توضیح بدن ممنون می شم.

خیلی ساده، اول یک کلاسی می سازیم که از Control ارث بری کنه، Control رخداد کلیک کردن داره، اما فرضا مشخصه ای به اسم Image نداره.
پس چند تا مشخصه و متغیر برایش تعریف می کنیم :

متغیر mHover برای اینکه بفهمیم ماوس کی رو دکمه رفته و کی کنار رفته. و بر اساس این mHover وقتی ماوس روی دکمه رفت یک لایه
نیمه شفاف سفید روی تصویر رسم می کنیم که روشن تر بشه.
یک متغیر mPressed هم تعریف می کنیم که وقتی ماوس روی دکمه فشار داده شد True بشه و تصویر رو تیره تر رسم کنیم.
یک مشخصه AutoSize هم اضافه می کنیم که ابعاد کنترل رو دقیقا مطابق با تصویر تغییر بده.

تنها بخش پیچیده ماجرا تیره و روشن شدن تصویره، اگر کنترل نیمه شفاف نبود، مشکلی نداشتیم اما چون ممکنه زمینه اش Transparent باشه
باید برای روشن و تیره شدن تصویر فکری بکنیم که فقط نواحی ای که تصویر هست روشن و تیره بشه، نه کل کادر کنترل. خود Net. برای این
منظور متد آماده ای نداره که روی تصاویر نیمه شفاف جواب بده، پس مجبور می شویم که یک متد نسبتا پیچیده و سنگین CreateMask رو بسازیم
که تصویر رو پردازش کنه و از روی نواحی شفاف و غیر شفاف تصویر ما یک Mask بسازه که دقیقا با حالت نیمه شفاف تصویر منطبق باشه.
اینطوری دیگه نواحی شفاف تصویر دست نخورده می مونه و تیره و روشن نمیشه.

ehsan7007
شنبه 07 مرداد 1391, 23:15 عصر
فقط من در سایزش مشکل دارم.
جز اینکه سایز تصویرم رو تغییر بدم ، راه دیگه ای برای تغییر اندازه ی مای باتن نیست؟

the king
یک شنبه 08 مرداد 1391, 02:36 صبح
فقط من در سایزش مشکل دارم.
جز اینکه سایز تصویرم رو تغییر بدم ، راه دیگه ای برای تغییر اندازه ی مای باتن نیست؟

چرا نباشه، این دیگه یک Control دست سازه، میشه هر قابلیتی رو بهش اضافه کنید، اگه بجای AutoSize
مشخصه SizeMode ئه PictureBox رو بهش بدیم تکمیل میشه چون همه حالت های تغییر اندازه رو داره،
فقط باید نحوه نمایش تصویر Disabled رو عوض کنیم، چون ControlPaint قابلیت هاش محدوده :

90408