PDA

View Full Version : مشکل با UseVisualStyleBackColor باتن



hesam_mahmoodi
جمعه 11 اسفند 1391, 16:18 عصر
1) من میخوام BackColor باتن رو عوض کنم ولی وقتی اینکارو میکنم از حالت برجسته و 3 بعدی بیرون میاد و UseVisualStyleBackColor مساوی false میشه!!! وقتی هم که UseVisualStyleBackColor رو True میکنم باتم برمیگرده به همون حالت اولیه و BackColor اولیه!!!

2) چیکار کنم که سایه باتن وقتی موس میره روش تغییر کنه و رنگی که من میخوام جاش بزارم؟

danialafshari
جمعه 11 اسفند 1391, 20:02 عصر
سلام
به لینک زیر یه نگاه بندازید :
http://stackoverflow.com/questions/7127946/c-changing-button-backcolor-has-no-effect
بهتره با Blend کار کنین 100 برابر زیباتر از این دکمه ها میتونید بسازید

the king
جمعه 11 اسفند 1391, 22:49 عصر
1) من میخوام BackColor باتن رو عوض کنم ولی وقتی اینکارو میکنم از حالت برجسته و 3 بعدی بیرون میاد و UseVisualStyleBackColor مساوی false میشه!!! وقتی هم که UseVisualStyleBackColor رو True میکنم باتم برمیگرده به همون حالت اولیه و BackColor اولیه!!!

2) چیکار کنم که سایه باتن وقتی موس میره روش تغییر کنه و رنگی که من میخوام جاش بزارم؟

این نمونه محدودیت رنگ نداره (مشخصه FaceColor) می توانید در رخداد های MouseEnter و MouseLeave تغییرش بدهید.

100741

hesam_mahmoodi
شنبه 12 اسفند 1391, 11:55 صبح
این نمونه محدودیت رنگ نداره (مشخصه FaceColor) می توانید در رخداد های MouseEnter و MouseLeave تغییرش بدهید.

100741


مرسی عالی بود، دقیقا دنبال همچین چیزی میگشتم. تشـــکر

hesam_mahmoodi
یک شنبه 13 اسفند 1391, 22:19 عصر
این نمونه محدودیت رنگ نداره (مشخصه FaceColor) می توانید در رخداد های MouseEnter و MouseLeave تغییرش بدهید.

100741

چطوری میتونم این رو به پروژه خودم انتقال بدم وقتی انتقال میدم ارور های زیر رو میده!!!

تو کلاس Alpha.cs این خط رو ارور میگیره (unsafe)


unsafe
{
byte* sourcePtr = (byte*)sourceData.Scan0;
byte* maskPtr = (byte*)maskData.Scan0 + 3;
int count = source.Width * source.Height;
byte red = color.R;
byte green = color.G;
byte blue = color.B;
byte alpha = color.A;
for (int i = 0; i < count; i++)
{
sourcePtr[0] = blue;
sourcePtr[1] = green;
sourcePtr[2] = red;
sourcePtr[3] = (byte)(((int)color.A * (int)maskPtr[0]) / 255);
sourcePtr += 4;
maskPtr += 4;
}
}


و تویه کلاس کامپوننت CButton.cs هم هرکجا از کلمه button استفاده شده باه رو ارور میگیریه!!!!!!
مثل:


Alpha.FillMask(mask, Properties.Resources.button, this.FaceColor);
.
.
.
g.DrawImage(Properties.Resources.button, dst, new Rectangle(0, 0, 11, 27), GraphicsUnit.Pixel);
.
.
.

the king
یک شنبه 13 اسفند 1391, 23:32 عصر
چطوری میتونم این رو به پروژه خودم انتقال بدم وقتی انتقال میدم ارور های زیر رو میده!!!

تو کلاس Alpha.cs این خط رو ارور میگیره (unsafe)


unsafe
{
byte* sourcePtr = (byte*)sourceData.Scan0;
byte* maskPtr = (byte*)maskData.Scan0 + 3;
int count = source.Width * source.Height;
byte red = color.R;
byte green = color.G;
byte blue = color.B;
byte alpha = color.A;
for (int i = 0; i < count; i++)
{
sourcePtr[0] = blue;
sourcePtr[1] = green;
sourcePtr[2] = red;
sourcePtr[3] = (byte)(((int)color.A * (int)maskPtr[0]) / 255);
sourcePtr += 4;
maskPtr += 4;
}
}


و تویه کلاس کامپوننت CButton.cs هم هرکجا از کلمه button استفاده شده باه رو ارور میگیریه!!!!!!
مثل:


Alpha.FillMask(mask, Properties.Resources.button, this.FaceColor);
.
.
.
g.DrawImage(Properties.Resources.button, dst, new Rectangle(0, 0, 11, 27), GraphicsUnit.Pixel);
.
.
.


مواردی که باید بعد از انتقال به پروژه دیگری تغییر بدهید یا اضافه کنید اینها هستند :

1) پروژه یک تصویر به عنوان Skin دکمه داره، با اسم button که مربوط به فایل button.png است.
در منوی Project ویژوال استدیو ، گزینه ...Project Name} Properties} را انتخاب کنید. زبانه Resources را باز کرده
و گروه Images را فعال کرده (Ctrl + 2) و ...Add Resource > Add Existing File را انتخاب کنید و فایل button.png مورد نظر
رو به Resource های پروژه تون اضافه کنید تا در کد به Properties.Resources.button دسترسی داشته باشیم.

2) برای افزایش سرعت متد FillMask از قابلیت اشاره گر های #C استفاده شده که جزو کد های Unsafe ئه.
برای فعال کردن قابلیت Unsafe در کامپایلر در منوی Project ویژوال استدیو ، گزینه ...Project Name} Properties} را انتخاب کنید.
زبانه Build را باز کرده و تیک گزینه Allow unsafe code را بزنید.

3) ابتدای کد فایل های Alpha.cs و CButton.cs از namespace ئه ColorButton استفاده شده :

namespace ColorButton
{

اسم ColorButton رو ویرایش کرده و مطابق namespace پروژه تان (در کد فرم های پروژه تان هست) تغییر بدهید.

hesam_mahmoodi
دوشنبه 14 اسفند 1391, 12:14 عصر
مواردی که باید بعد از انتقال به پروژه دیگری تغییر بدهید یا اضافه کنید اینها هستند :

1) پروژه یک تصویر به عنوان Skin دکمه داره، با اسم button که مربوط به فایل button.png است.
در منوی Project ویژوال استدیو ، گزینه ...Project Name} Properties} را انتخاب کنید. زبانه Resources را باز کرده
و گروه Images را فعال کرده (Ctrl + 2) و ...Add Resource > Add Existing File را انتخاب کنید و فایل button.png مورد نظر
رو به Resource های پروژه تون اضافه کنید تا در کد به Properties.Resources.button دسترسی داشته باشیم.

2) برای افزایش سرعت متد FillMask از قابلیت اشاره گر های #C استفاده شده که جزو کد های Unsafe ئه.
برای فعال کردن قابلیت Unsafe در کامپایلر در منوی Project ویژوال استدیو ، گزینه ...Project Name} Properties} را انتخاب کنید.
زبانه Build را باز کرده و تیک گزینه Allow unsafe code را بزنید.

3) ابتدای کد فایل های Alpha.cs و CButton.cs از namespace ئه ColorButton استفاده شده :

namespace ColorButton
{

اسم ColorButton رو ویرایش کرده و مطابق namespace پروژه تان (در کد فرم های پروژه تان هست) تغییر بدهید.

مرسی درست شد دستتدردنکنه.