Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];

Вниз

Как на Button нарисовать свою картинку и проиграть звук?   Найти похожие ветки 

 
brestmarket   (2002-10-18 02:59) [0]

Как на Button нарисовать свою картинку - BitBtn и SpeedButton не
подходят, т.к. не поддерживают XP-интерфейс?, а также как лучше
проиграть определенный звук, при первом подведении курсора к кнопке?


 
MJH   (2002-10-18 12:07) [1]

1) TImage
2) PlaySound()


 
brestmarket   (2002-10-18 12:53) [2]

Если можно пример, рисования на Button...
Буду очень и очень признателен...


 
AM   (2002-10-18 13:31) [3]

Один из подходов это :
>> MJH © (18.10.02 12:07)

Вместо Button использовать компонент TImage, в корый подгрузить изображение нарисованной кнопки. Можно имулировать нажатие кнопки меняя картинку в TImage на события OnMouseDown, OnMouseUp.
Конечно это все нудно... но зато кнопки будут красивыми :)


С другой стороны можно поразмыслить логически:
У большинства визуальных компонентов есть canvas (холст) на котором можно рисовать.
У компонента TButton нету Canvas, либо оно Protected.
Если последнее верно (не знаю надо это уточнить), то можно создать свой компонет TMyButton, у которого есть Canvas, что позволит рисовать.



 
k   (2002-10-19 01:04) [4]

чтобы нарисовать картинку на TButton

нужно обработать событие WM_PAINT
то есть создать класс-наследник от TButton


MyClass = class(TButton)
protected
procedure WMPaint(var Msg:TWMPaint); message WM_Paint;
end;
......
implementation

pocedure MyClass.WMPaint(var Msg:TWMPaint);
var dc:hdc;
begin
//кроме WinAPI ничего в голову не прет....
dc := GetDC(Handle{это будет HWND кнопки});
BitBlt(dc,0,0, width, height, MyBitMap.Canvas.Handle,0,0,SRCCOPY);
//в MyBitMap загони нужную картинку, подгони размер
//и вааще имея dc можно нарисовать все что угодно..
ReleaseDC(Handle, dc);
inherited;
end;

в данном случае не проверял, но идея,надеюсь, понятна?

а чтоб звук проиграть-обрабатывай событие OnMouseMove







 
k   (2002-10-19 01:07) [5]

у TButton нет канваса. вообще. никак.
см. declaration этого класса...


 
MJH   (2002-10-19 08:38) [6]

2k
кстати как-то такое я делал, короче когда кнопку жмешь - она стирается...не выйдет. лучше свою сделать


 
k   (2002-10-20 00:22) [7]

2MJH ©
ты прав, я уже убедился в этом


 
TTCustomDelphiMaster   (2002-10-20 10:49) [8]

Чтобы кнопка не стиралась при нажатии нужно перерисовывать ее на событие BM_SETSTATE

type
MyClass = class(TButton)
protected
procedure WMPaint(var Msg:TWMPaint); message WM_Paint;
procedure BMSetState(var Msg:TWMPaint); message BM_SETSTATE;
end;

implementation

procedure MyClass.BMSetState(var Msg: TWMPaint);
var
cv: TCanvas;
begin
inherited;
cv := TCanvas.Create;
cv.Handle := GetDC(Handle);
cv.Ellipse(5, 5, 20, 20);
ReleaseDC(Handle, cv.Handle);
cv.Free;
end;

procedure MyClass.WMPaint(var Msg:TWMPaint);
var
cv: TCanvas;
begin
inherited;
cv := TCanvas.Create;
cv.Handle := GetDC(Handle);
cv.Ellipse(5, 5, 20, 20);
ReleaseDC(Handle, cv.Handle);
cv.Free;
end;


 
Ricks   (2002-10-20 15:14) [9]

А может надо свою кнопку сделать? Приделать туда темы и все-такое???



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-4935
MAPIIIAJL
2003-01-25 10:54
2003.02.03
Перевод Single в байтовый массив и обратно.


7-5279
maxim2
2002-11-19 21:39
2003.02.03
Можно ли заблокировать опр. клавишу?


4-5343
KPV-10k
2002-12-20 22:35
2003.02.03
Кто знает как заставить НТ перейти в спящий режим...


14-5260
iNew
2003-01-17 06:05
2003.02.03
Как в Fare посмотреть размер файла?


14-5190
Думкин
2003-01-13 06:22
2003.02.03
Образование и общ...... 5?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский