Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как рисовать на канве 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо