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

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

Рисование на Panel


Страницы:   1 2

Bor ©   (2007-12-18 23:37:00) 

Здравствуйте, уважаемые мастера!
У меня чего-то опять ничего не получается. Можно ли рисовать на Panel?
Делал так:

bmp: TBitmap;
-------------
bmp:=TBitmap.Create;
bmp.LoadFromFile('picture.bmp');
Panel1.Brush.Bitmap:=bmp;


Но ничего не менялось.


{RASkov}   (2007-12-19 14:14:00) [1]

> То есть PaintBox с разрисованной канвой можно использовать
> вместо панели?


> PaintBox использовать вместо меток тоже не хочется.

И почему все так боятся использовать ПаинтБокс? :)
А ведь его борландцы как раз для этих целей придумали)

> Вообще по идее подошел бы и Label, но он не может выравнивать
> текст по центру, и также при включенных темах его фон сбрасывается...

На счет фона и тем не знаю, но вот выравнивать текст лабел умеет... См. Alignment и Layout


Washington   (2007-12-19 13:24:00) [2]

Да не за что )


Виктор007   (2007-12-19 13:22:00) [3]

Спасибо... что-то я совсем притупел :(


Washington   (2007-12-19 13:19:00) [4]

А что цвет панели в clBlue выставить и Caption прописать нельзя?


Виктор007   (2007-12-19 13:13:00) [5]

У меня еще вопрос, как установить обработчик onPaint для панели. Мне нужна простая синяя панель с белым текстом по центру - но при включеных темах Windows цвет панели меняется на серый, в итоге белого текста не видно... Вообще по идее подошел бы и Label, но он не может выравнивать текст по центру, и также при включенных темах его фон сбрасывается...

PaintBox использовать вместо меток тоже не хочется.


Виктор007   (2007-12-19 13:00:00) [6]

Вот, в DelphiWorld нашел:

У всех компонентов, порожденных от TCustomControl, имеется свойство Canvas типа TCanvas. Грубо говоря, это аналог TDC из OWL. Те операции, которые нельзя выполнить с помощью методов TCanvas, можно выполнить с помощью WinAPI. Для этого у обьектов класса TCanvas имеется свойство Handle - это и есть Хэндл Дисплейного Контекста ОС Windows (HDC), который необходим графическим функциям WinAPI. Если свойство Canvas недоступно, Вы можете достучаться до него созданием потомка и переносом этого свойства в раздел Public.

type
 TcPanel = class(TPanel)
public
 property Canvas;
end;


А если у объекта нет свойства Canvas (у TDBEdit, вpоде-бы нет), по кpайней меpе в D3 можно использовать класс TControlCanvas. Пpимеpное использование:

var
 cc: TControlCanvas;
...
 cc := TControlCanvas.Create;
 cc.Control := youControl;
...


и далее как обычно можно использовать методы Canvas.


Washington   (2007-12-19 12:44:00) [7]

То есть PaintBox с разрисованной канвой можно использовать вместо панели?


{RASkov}   (2007-12-19 12:40:00) [8]

> [15] Washington ©   (19.12.07 12:36)

А какая разница??? Рисовать или "вставить" - чем отличаются?


Washington   (2007-12-19 12:36:00) [9]

Ну мне не рисовать, а готовую картинку надо было вставить.


{RASkov}   (2007-12-19 12:35:00) [10]

> [13] Washington ©   (19.12.07 12:24)
> А почему ужасно?
>
> P.S. Просто интересно, т.к. я так делал

Ты расскажи о великой надобности, в этом "нелегком деле", панели.... Да и TImage зачем?
Если всего-то необходимо нарисовать нечто на канве.....)
А, ну да, забыл.... у нас же мощные компы :)


Washington   (2007-12-19 12:24:00) [11]

А почему ужасно?

P.S. Просто интересно, т.к. я так делал. Может переделать надо.


{RASkov}   (2007-12-19 11:31:00) [12]

> [11] Washington ©   (19.12.07 11:25)

ужасно.... (
:)
Что в самом деле проще, так это взять, как советуют, ПаинтБокс и не извращаться)

ЗЫ У нас же "компы" совремнные что нам до этих ресурсов.... подумаешь хэндлы(
:о)


Washington   (2007-12-19 11:25:00) [13]

А нельзя на панель кинуть Image и загрузить в него картинку. ИМХО проще


Рамиль   (2007-12-19 09:22:00) [14]


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
 public
   { Public declarations }
 end;
 TExtPanel = class(TPanel);

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 TExtPanel(Panel1).Canvas.MoveTo(1, 1);
 TExtPanel(Panel1).Canvas.LineTo(100, 100);
end;

end.


Loginov Dmitry   (2007-12-19 07:57:00) [15]

> У TPanelа ведь нет TCanvas


Есть. Точно также, как и у любого другого контрола.


homm   (2007-12-19 00:42:00) [16]

> [7] Bor ©   (19.12.07 00:10)
> И как быть?

Рисовать?


Bor   (2007-12-19 00:10:00) [17]


> homm

Ну, да, действительно. И как быть?


Efir   (2007-12-19 00:09:00) [18]

var
 C:TCanvas;
begin
 C:=TCanvas.Create;
 try
   C.Handle:=GetDC(Panel1.Handle);
   C.LineTo(10,10);
 finally
   C.Free;
 end;
end;


homm   (2007-12-18 23:54:00) [19]

> [0] Bor ©   (18.12.07 23:37)
> Можно ли рисовать на Panel?

Закон не запрещает.


> bmp:=TBitmap.Create;
> bmp.LoadFromFile('picture.bmp');
> Panel1.Brush.Bitmap:=bmp;
>
> Но ничего не менялось.

А должно? Где здесь рисование то?


fics   (2007-12-18 23:51:00) [20]

Ну подскажите тогда как быть, мне тоже интересно будет узнать, а если неправда извеняюсь.


Страницы:   1 2

Наверх

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