Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > нарисовать Bitmap на Canvas'e


Автор: 0LineGate 3.6.2007, 20:51
у меня есть TShellListView как на фоне нарисовать то что у меня в Image1?..

такой код почему-то не работает...

Код

ShellListView1.Canvas.Draw(0,0,Image1.Picture.Graphic);
ShellListView1.Repaint;


как будет правильно?... у меня лично вообще никаких предположений... :(

Автор: aktuba 4.6.2007, 09:00
Судя по
Код

ShellListView1.Repaint;


код ты расположил не в OnPaint, а зря  smile 

Автор: 0LineGate 4.6.2007, 09:25
интересно где ты нашёл событие OnPaint у TShellListView  smile 

Автор: ivan219 4.6.2007, 17:19
Если нет то никто немешает это организовать smile 

Автор: 0LineGate 5.6.2007, 14:37
...как?...

Автор: ivan219 6.6.2007, 16:14
Посмотри как организован класс TCustomControl

Автор: 0LineGate 7.6.2007, 15:56
Код

  TCustomControl = class(TWinControl)
  private
    FCanvas: TCanvas;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  protected
    procedure Paint; virtual;
    procedure PaintWindow(DC: HDC); override;
    property Canvas: TCanvas read FCanvas;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;


а толку-то... 

таки как нарисовать Bitmap на Canvas'e TShellListView'а?..

Автор: ivan219 7.6.2007, 19:49
Упссс маленько вопрос непонял smile извини не в ту степь ушол smile 

Вот так работает smile 
Код

procedure TForm1.FormPaint(Sender: TObject);
begin
 ShellListView1.Canvas.Draw(0,0,Image1.Picture.Graphic);
end;

Правда коряво smile 

Надо OnPaint самому TShellListView делать smile 

Автор: ivan219 7.6.2007, 20:07
Жаль его исходного кода нет smile 

Автор: ivan219 10.6.2007, 16:01
Цитата(ivan219 @  7.6.2007,  20:07 Найти цитируемый пост)
Жаль его исходного кода нет

А он и ненужен smile 

Так что если вопрос всё ещё актуален вот компонент в котором есть событие OnPaint smile 

Правда всёравно коряво получается smile 

Автор: 0LineGate 10.6.2007, 17:44
ещё не смотрел, посмотрю - дам + smile

Автор: Ak47black 21.6.2007, 11:21
Если я правильно понял, то тут у вас проблемы с отловом событий.
Как вариант вам тогда можно перенаправить процедуру обработки сообщений WindowProc у любого компонента TWinControls и самому поотлавливать любое событие.
Тоесть делаем так 
  • Создаем свою процедуру обработки (WindowProc)
  • Сохраняем старый адрес WindowProc  у компонента
  • Приравниваем к WindowProc  свою процедуру обработки
  • И в своей процедуре обрабатываем сообщение и  вызываем старую процедуру WindowProc (или вообще не вызываем если обработали)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)