Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.03;
Скачать: CL | DM;

Вниз

Как рисовать на канве BitBtn?   Найти похожие ветки 

 
madmech ©   (2009-03-16 15:39) [0]

Подскажите, как можно рисовать на канве BitBtn, а то у меня ничего не получается. Дельфи не реагирует на команды вида:

ImageList1.Draw(BitBtn1.Glyph.Canvas, 0, 0, 0);
BitBtn1.Glyph.Canvas.LineTo(5, 5);


 
Palladin ©   (2009-03-16 15:55) [1]

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;


 
Palladin ©   (2009-03-16 16:46) [2]

упс, забыл про TDCC :)

Type TDCC=Class(TBitBtn);


 
korneley ©   (2009-03-16 20:05) [3]

А чем обычная "черепашья" не угодила :)

 with BitBtn1.Glyph.Canvas do begin
   MoveTo(1, 10);
   LineTo(10, 10);
 end;

Да, и главное, Glyph должен существовать на момент рисования :))) Это ж TBitMap, экземпляр объекта всё таки....


 
Palladin ©   (2009-03-16 20:06) [4]

но рисование на глифе будет, а не битбтн"е :)


 
korneley ©   (2009-03-16 20:13) [5]

Совершенно очевидно. Я ж на глиф исходя из [0] опёрся. Ну хочет на глифе, так сначала пусть хоть создаст его ;)


 
madmech ©   (2009-03-17 16:45) [6]

Все нормально, все рисуется, как надо, но есть одна маленькая загвоздка: после того, как я перевожу фокус на какой-нибудь другой компонент, нарисованное на канве исчезает. Что делать, как сохранить рисунок?


 
MsGuns ©   (2009-03-17 17:03) [7]

Очевидно при перерисовке битбтн ничего не знает о Вашей "наколке" на нем :)


 
{RASkov} ©   (2009-03-17 17:58) [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;

И ничего не стирается...


 
madmech ©   (2009-03-18 12:10) [9]

Ага, спасибо, все заработало, как только я стал задавать размеры глифа.


 
madmech ©   (2009-03-18 17:46) [10]

Тогда вопрос таков: а можно ли напрямую загружать в Глиф рисунок из Имажлиста, не занимаясь отрисовкой на канве БитБтн?


 
korneley ©   (2009-03-18 18:03) [11]

Да


 
Плохиш ©   (2009-03-18 18:11) [12]


> madmech ©   (18.03.09 17:46) [10]

Т.е. изучать свойства используемого компонента - "не дело крютых перцев"?


 
madmech ©   (2009-03-19 13:40) [13]

Кстати говоря, Мальчиш-плохишъ, "крютой перец" уже изучил используемый компонент (ИмажЛист) и нашел там функцию GetBitMap. Правда разницы особой все равно нет: рисовать на канве или использовать GetBitMap, ибо и в том и в другом случае приходится задавать размеры глифа, и каждый раз заливать его, чтобы стереть предыдущее изображение. Воть. :)


 
{RASkov} ©   (2009-03-19 17:13) [14]

> [13] madmech ©   (19.03.09 13:40)

Кстати говоря.... он бы наверняка сделал так:
ImageList.getBitmap(i, BitBtn.Glyph);
:)


 
{RASkov} ©   (2009-03-19 17:17) [15]

> [13] madmech ©   (19.03.09 13:40)
> и в другом случае приходится задавать размеры глифа, и каждый
> раз заливать его

Прежде посмотрел бы реализацию GetBitMap....)



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

Текущий архив: 2009.05.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
2-1235098931
kjhgfdjk
2009-02-20 06:02
2009.05.03
Коды клавиш


15-1235949803
Германн
2009-03-02 02:23
2009.05.03
Опять о программистах


15-1234853071
24ruswebmaster
2009-02-17 09:44
2009.05.03
This is a multi-part message in MIME format


4-1208928035
AlexK
2008-04-23 09:20
2009.05.03
TSWStringArray (LPWSTR)


15-1235925203
kami
2009-03-01 19:33
2009.05.03
Потери скорости при соединении через несколько модемов