![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как рисовать на канве BitBtn? [D7, XP]
madmech © (2009-03-16 15:39:00)Подскажите, как можно рисовать на канве BitBtn, а то у меня ничего не получается. Дельфи не реагирует на команды вида:
ImageList1.Draw(BitBtn1.Glyph.Canvas, 0, 0, 0);
BitBtn1.Glyph.Canvas.LineTo(5, 5);
{RASkov} (2009-03-19 17:17:00) [1]> [13] madmech © (19.03.09 13:40)
> и в другом случае приходится задавать размеры глифа, и каждый
> раз заливать его
Прежде посмотрел бы реализацию GetBitMap....)
{RASkov} (2009-03-19 17:13:00) [2]> [13] madmech © (19.03.09 13:40)
Кстати говоря.... он бы наверняка сделал так:
ImageList.getBitmap(i, BitBtn.Glyph);
:)
madmech (2009-03-19 13:40:00) [3]Кстати говоря, Мальчиш-плохишъ, "крютой перец" уже изучил используемый компонент (ИмажЛист) и нашел там функцию GetBitMap. Правда разницы особой все равно нет: рисовать на канве или использовать GetBitMap, ибо и в том и в другом случае приходится задавать размеры глифа, и каждый раз заливать его, чтобы стереть предыдущее изображение. Воть. :)
Плохиш (2009-03-18 18:11:00) [4]
> madmech © (18.03.09 17:46) [10]
Т.е. изучать свойства используемого компонента - "не дело крютых перцев"?
korneley (2009-03-18 18:03:00) [5]Да
madmech (2009-03-18 17:46:00) [6]Тогда вопрос таков: а можно ли напрямую загружать в Глиф рисунок из Имажлиста, не занимаясь отрисовкой на канве БитБтн?
madmech (2009-03-18 12:10:00) [7]Ага, спасибо, все заработало, как только я стал задавать размеры глифа.
{RASkov} (2009-03-17 17:58:00) [8]
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
with BitBtn1.Glyph do begin
Width:=BitBtn1.Width div 3;
Height:=BitBtn1.Height-4;
Canvas.Rectangle(3, 3, Height-3, Height-3);
end;
end;
И ничего не стирается...
MsGuns (2009-03-17 17:03:00) [9]Очевидно при перерисовке битбтн ничего не знает о Вашей "наколке" на нем :)
madmech (2009-03-17 16:45:00) [10]Все нормально, все рисуется, как надо, но есть одна маленькая загвоздка: после того, как я перевожу фокус на какой-нибудь другой компонент, нарисованное на канве исчезает. Что делать, как сохранить рисунок?
korneley (2009-03-16 20:13:00) [11]Совершенно очевидно. Я ж на глиф исходя из [0] опёрся. Ну хочет на глифе, так сначала пусть хоть создаст его ;)
Palladin (2009-03-16 20:06:00) [12]но рисование на глифе будет, а не битбтн'е :)
korneley (2009-03-16 20:05:00) [13]А чем обычная "черепашья" не угодила :)
with BitBtn1.Glyph.Canvas do begin
MoveTo(1, 10);
LineTo(10, 10);
end;
Да, и главное, Glyph должен существовать на момент рисования :))) Это ж TBitMap, экземпляр объекта всё таки....
Palladin (2009-03-16 16:46:00) [14]упс, забыл про TDCC :)
Type TDCC=Class(TBitBtn);
Palladin (2009-03-16 15:55:00) [15]
Var
w:HWND;
c:TCanvas;
begin
c:=TCanvas.Create;
Try
c.Handle:=TDCC(bitbtn1).getdevicecontext(w);
c.LineTo(10,10);
Finally
c.Free;
End;
end;