C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
и снова SpeedButton..., рмка во круг картинки
enton
Отправлено: 05.03.2007, 10:48


Дежурный стрелочник

Группа: Участник
Сообщений: 44



проблемма в следующем, помещаю в спид баттон к примеру 1.бмп, причем фон у нее прозрачный, ставлю свойство flat=true, получает виден нужный мне рисунок на фоне окна но он имеет белую рамку в 1п. и не как не могу от этого избавиться(
aquanet sk
Отправлено: 07.03.2007, 00:19


Станционный диспетчер

Группа: Участник
Сообщений: 87



Та же фигня с рамкой. Я не могу другие типы кнопок окрашивать в нужный мне цвет, поэтому юзал SpeedButton со свойством Flat.
Termi_uc
Отправлено: 07.03.2007, 19:44


Дежурный стрелочник

Группа: Участник
Сообщений: 61



Я не очень понял проблему. Но если нужно, чтобы не рисовалась рамка вокруг кнопки в момент наведения мышки, то самый простой способ — подмена оконной процедуры

Примерно так:
CODE

TWndMethod OldWindowProc;//Переменная-указатель на старую оконную процедцрц

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Получаем значение старой и устанавливаем новую оконную проц.
OldWindowProc = SpeedButton1->WindowProc;
SpeedButton1->WindowProc = NewWindowProc;
}
//---------------------------------------------------------------------------
//Это собственно оно и есть
void __fastcall TForm1::NewWindowProc(Messages::TMessage &Message)
{
if(Message.Msg != CM_MOUSEENTER && Message.Msg != CM_MOUSELEAVE)//События игнорируются
 OldWindowProc(Message);
}

Только будте осторожны с таким способом если захотите его расширить. Надо учитывать, что при посылки окну сообщения отправитель может дожидатся ответа в переменной Message.Result.
enton
Отправлено: 10.03.2007, 16:33


Дежурный стрелочник

Группа: Участник
Сообщений: 44



вот картинка вставте ее в спидбаттон (flat=true) и фоном ставим какую нибудь фотку, и видим что по контуру рисунка кнопки идет белый цвет(
enton
Отправлено: 10.03.2007, 16:56


Дежурный стрелочник

Группа: Участник
Сообщений: 44



вот пример

User Attached Image Скачать файл
кнопка.zip


Termi_uc
Отправлено: 13.03.2007, 16:51


Дежурный стрелочник

Группа: Участник
Сообщений: 61



QUOTE (enton @ 10.03.2007, 16:33)
вот картинка вставте ее в спидбаттон (flat=true) и фоном ставим какую нибудь фотку, и видим что по контуру рисунка кнопки идет белый цвет(

Ничего не понял, но пример скачал и сделал. Вот

User Attached Image Скачать файл
knopka.zip


enton
Отправлено: 14.03.2007, 17:52


Дежурный стрелочник

Группа: Участник
Сообщений: 44



проблема не в рамке кнопки, а в рамке рисунка который на ней!
для наглядности делаем так, качаем пример(у некоторых он уже есть:)) кидаем имдж, вставляем в него любую фотку, спидбаттон там уже есть(с картинкой), дык вот когда мы запускаем прогу то видим что во круг рисунка который на кнопки идет белая рамка в 1п. вот как раз я от нее и не могу избавиться, как раз в ней проблема!!! если открыть картинку которая на кнопке то увидим что у нее прозрачный фон!
если опять не понятно, уточните на каком моменте именно!
aquanet sk
Отправлено: 15.03.2007, 12:32


Станционный диспетчер

Группа: Участник
Сообщений: 87



т.е. Вы имеете ввиду округлую рамку: те светлые пиксели, которые вокруг синеватого круга с крестиком? Дык я с таким борюсь в Photoshop`e, а белая рамка у меня и без запуска программы видна (та, про которую Вы речь ведете..наверное), см. картинку.

P.S. При компиляции проекта "кнопка" у меня вылетела ошибка [Linker Fatal Error] Fatal: Expected a file name: , ну не суть.

Присоединить изображение

Присоединить изображение

enton
Отправлено: 15.03.2007, 17:11


Дежурный стрелочник

Группа: Участник
Сообщений: 44



именно! она меня и беспокоит!!!
я пробовал в шопе бороться но похоже не сильно получается.

мне еще подсказали вот что, цвет фона берется из левого верхнего пиксела, в нашем случае он прозрачный, и билдер ставит по умолчанию белый, в этом то как раз и проблемма, как вариант можно было поствить точку в левом верхнем углу и горя не знать, только мне это не подходит потому что картинки смещаются во время юзанья проги(

Вернуться в Вопросы программирования в C++Builder