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

Вниз

Прозрачная картинка   Найти похожие ветки 

 
webpauk ©   (2007-12-21 13:19) [0]

В папках Мои рисунки, Моя музыка отображаются фоновые рисунки, указывающие на тип папки (ноты, картинки).
Хочу такую фишку для компонента, например TlistBox.
на компонент выводится полупрозрачный рисунок, поверх которого (или под которым) идут TlistBox.Items.
Кто-нить подскажет где рыть?


 
clickmaker ©   (2007-12-21 13:23) [1]

подмена WndProc и перехват WM_PAINT? или WM_ERASEBKGND
или OnDrawItem и выводить только нужный фрагмент


 
webpauk ©   (2007-12-21 13:25) [2]


> clickmaker ©   (21.12.07 13:23) [1]

listbox для примера.
OnDrawItem - не подойдет.
подмена WndProc и перехват WM_PAINT попробую...


 
clickmaker ©   (2007-12-21 13:30) [3]


> OnDrawItem - не подойдет

так проще. Можно же рисовать
ListBox.Canvas.CopyRect(ItemRect, BkBmp.Canvas, SrcRect);
где SrcRect - часть картинки размером с ItemRect, с учетом прокрутки


 
webpauk ©   (2007-12-21 13:37) [4]


> > clickmaker ©   (21.12.07 13:23) [1]
>
> listbox для примера.


> clickmaker ©   (21.12.07 13:30) [3]

рисовать буду не только на listbox


 
webpauk ©   (2007-12-21 13:40) [5]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   ImageList1: TImageList;
   procedure FormCreate(Sender: TObject);
 private
   oldwndproc: TWndMethod;

   procedure  NewWndProc(var  Msg: TMessage);
 protected
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 oldwndproc:=ListBox1.WindowProc;
 ListBox1.WindowProc:=NewWndProc;
end;

procedure TForm1.NewWndProc(var  Msg: TMessage);
var
 fCanvas: TCanvas;
 fIcon: TIcon;
begin
 oldwndproc(Msg);

 case msg.Msg of
   WM_PAINT:
   begin
     fCanvas:=TCanvas.Create;
     fCanvas.Handle:=GetWindowDC(ListBox1.Handle);
     fIcon:=TIcon.Create;

     try
       ImageList1.GetIcon(0, fIcon);
       fCanvas.Draw(0, 0, fIcon);
     finally
       fIcon.Free;
     end;
   end;
 end;
end;

end.


вроде получилось
тока при Click на элементе - рисунок затирается


 
webpauk ©   (2007-12-21 14:10) [6]

и как сделать иконку полупрозрачной?



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
4-1182254758
Alexey SVD
2007-06-19 16:05
2008.01.20
Как выключить компьютер под xp


15-1197452705
DelphiN!
2007-12-12 12:45
2008.01.20
Алгоритм вычисления, максимального колличества пересечений времен


2-1198174004
Stepper
2007-12-20 21:06
2008.01.20
Как при сохранении данных из RichEdit - добавить к ним строку..


2-1197947467
mrFreeman2007
2007-12-18 06:11
2008.01.20
Воспроизведение видео в отдельном окне


2-1197971090
Terc
2007-12-18 12:44
2008.01.20
Как узнать созданли компонент ?