Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];

Вниз

Рисование на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.043 c
1-1192698414
borodin
2007-10-18 13:06
2008.01.20
Директива message


11-1182503317
=BuckLr=
2007-06-22 13:08
2008.01.20
Взять Items[i] как из RichEdit RTF-строку


15-1197517281
Slider007
2007-12-13 06:41
2008.01.20
С днем рождения ! 13 декабря 2007 четверг


15-1197555361
Dennis I. Komarov
2007-12-13 17:16
2008.01.20
MUI


2-1197993068
авыф
2007-12-18 18:51
2008.01.20
TMemoryStream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский