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

Вниз

Рисование на Panel   Найти похожие ветки 

 
Bor ©   (2007-12-18 23:37) [0]

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

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


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


 
fics ©   (2007-12-18 23:41) [1]

А зачем тебе на пенеле рисовать, если не секрет? Рисуй на PaintBox.


 
fics ©   (2007-12-18 23:47) [2]

У TPanelа ведь нет TCanvas, поэтому ничего не получится, для этого есть другие компоненты.TImage TPaintBox ну и на форме можно.


 
niKo   (2007-12-18 23:49) [3]


> У TPanelа ведь нет TCanvas, поэтому ничего не получится,
>  для этого есть другие компоненты.TImage TPaintBox ну и
> на форме можно.

неправда!


 
fics ©   (2007-12-18 23:51) [4]

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


 
homm ©   (2007-12-18 23:54) [5]

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

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


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

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


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

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


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


> homm

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


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

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

Рисовать?


 
Loginov Dmitry ©   (2007-12-19 07:57) [9]

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


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


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


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.


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

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


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

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

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

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


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

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

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


 
{RASkov} ©   (2007-12-19 12:35) [14]

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

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


 
Washington ©   (2007-12-19 12:36) [15]

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


 
{RASkov} ©   (2007-12-19 12:40) [16]

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

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


 
Washington ©   (2007-12-19 12:44) [17]

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


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

Вот, в 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.


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

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

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


 
Washington ©   (2007-12-19 13:19) [20]

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


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

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


 
Washington ©   (2007-12-19 13:24) [22]

Да не за что )


 
{RASkov} ©   (2007-12-19 14:14) [23]

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


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

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

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

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



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

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

Наверх




Память: 0.52 MB
Время: 0.02 c
15-1196834343
vajo
2007-12-05 08:59
2008.01.20
Можно как-то вычислить, кто в сети сообщения аськи прослушивает?


2-1198234675
Denis
2007-12-21 13:57
2008.01.20
Отображение текста из dbf


9-1165649515
max3d
2006-12-09 10:31
2008.01.20
Движок проблемы с реализацией


2-1198240068
Washington
2007-12-21 15:27
2008.01.20
CheckBoxOnClick


15-1197296712
fics
2007-12-10 17:25
2008.01.20
Графопостроитель