PDA

View Full Version : سوال: ایجاد تولبار جدید در ++ VC و مشکل در resource ها



حسین محمدی
چهارشنبه 20 خرداد 1388, 13:40 عصر
با سلام

من در ++ Visual C هنگامی که یک تولبار جدید به برنامه اضافه می کنم و یا می خواهم همان تولبار قبلی را تغییراتی در resource آن بدهم و تصویر جدیدی را به آن اضافه کنم با یک مشکل جدی موجه می شوم.
همانطور که می دانیم تولبار ها تصاویر با فرمت bmp هستند.

اولا اینکه خود محیط ویژوال استادیو ابزار و امکانات لازم را در اختیار قرار نمی دهد.
دوم اینکه اگر این ویرایش را در محیطی در خارج از محیط ویژوال استادیو انجام دهیم رنگ تصاویر به طور کلی به هم می ریزد.

با بررسی هایی که انجام دادم ظاهر فرمت تصاویر bmp نیز بسیار متنوع هستند و مثلا بسته به آن که با چه عمق رنگی ذخیره شوند با هم فرق دارند.

مشکل من بیشتر در جایی است که یک تصویر بیت مپ یا png را در اختیار دارم و می خواهم این تصویر را به تولبار خود اضافه کنم. ولی برنامه یا با error مواجه می شود یا رنگهای آن به کلی به هم می ریزد.

Nima_NF
چهارشنبه 20 خرداد 1388, 14:17 عصر
ساخت آیکن ها و عکس های tolbar قوانینی دارد که در هر سیستم عامل متفاوت هست.

مثلا با آمدن هر سیستم عامل جدید اندازه ها بزرگتر شد و میزان رنگ قابل نمایش افزایش یافت (مثلا 8-bit در XP و 32-bit در vista و 7 پشتیبانی می شود) به همین خاطر هست که آیکن ها در این سیستم عامل ها زیبا تر و نرم تر هستند و قابل مقایسه با windows 98 نیستند.

کار ساخت آیکن ها و این عکس ها توسط نرم افزارهای مخصوص این کار هست، برای عکس toolbar از photoshop استفاده کنید (paint این قابلیت ها را ندارد).

در حالت معمول شما باید دو عکس برای toolbar آماده کنید، یکی 8bit (همان 256 رنگ) و دیگری 24bit (چند میلیون رنگ).

اول یک عکس را با رنگ های معمولی در photoshop باز کنید:

- برای 24 بیت فقط کافیست عکس را به bmp ذخیره کنید، در هنگام ذخیره کردن منویی ظاهر می شود و از آن 24 بیت را انتخاب کنید.

- برای 8 بیت، همان عکس باز کنید، از منوی image گزینه mode و سپس آن را به indexed color تغییر دهید تا بتوانید در همان منو 8bit را انتخاب کنید وبه bmp ذخیره کنید.

- اندازه عکس ها هم باید قطعات مورد نظر شما باشد، مثلا 128x16 تا چند آیکن 16x16 داشته باشید.

نکته، شما توسط کدها یکی از دو عکس فوق را لود می کنید، مثلا در MFC قطعه کد زیر خودکار نوشته می شود:



UINT uiBmpId = theApp.m_bHiColorIcons ? IDB_FILE_VIEW_24 : IDB_FILE_VIEW;

CBitmap bmp;
if (!bmp.LoadBitmap(uiBmpId))
{
TRACE(_T("Can't load bitmap: %x\n"), uiBmpId);
ASSERT(FALSE);
return;
}

که اگر m_bHiColorIcons را از FALSE قرار دهید، عکس 8 بیتی را لود می کند.

مقاله زیر از مایکروسافت زیباترین مقاله آموزشی غیر برنامه نویسی هست که تاکنون در سایت مایکروسافت دیده ام و برای قوانین ساخت Icon ها است که با آمدن ویستا نوشته شد (دقت کنید که toolbar ها هم دسته از icon ها هستند و از جهاتی همانند هم هستند ):
http://msdn.microsoft.com/en-us/library/aa511280.aspx