Delphi之TDrawGrid绘制

一直都对QQ的好友列表很好奇,最先感觉用TreeView实现的,看了看TreeView的源码,发现要实现还真的不太好完成任务啊,其中最大的原因是自己的功力不足,后来觉得用ListView来做吧,结果也是失败,后来又想到ListBox,结果发现也是难成,最后发现有一个TDrawGrid,可以来绘制,但是不知道那两行文字怎么搞,有知道的望告知,谢谢。好了不再废话,就把最近对TDrawGrid的一些操作记录如下:

1.我们先设置TDrawGrid的属性:
BorderStyle:bsNone;
ColCount:1;
DefaultColWidth:200;
DefaultRowHeight:60;
RowCount:10;
GridLineWidth:2;
Options:[goFixedVertLine, goFixedHorzLine, goHorzLine, goDrawFocusSelected, goThumbTracking];
ScrollBars:ssVertical;

2.在窗体的public 域定义如下变量和函数:
  PicList: TList;
    function GetPicture(ACol, ARow:Integer): TBitMap;

3.完成相关函数和过程:

function TForm1.GetPicture(ACol, ARow: Integer): TBitMap;
var
  Index: integer;
begin
  Result := nil;
  Index := ARow * Grid.ColCount + ACol;
  if Index <= PicList.Count - 1  then
    Result := TBitmap(PicList.Items[Index]);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Bmp: TBitMap;
  Index: Integer;
  AFileName: string;
begin
  PicList := TList.Create;
  for Index := 1 to 10 do
  begin
    AFileName := Format(ExtractFilePath(ParamStr(0)) + ‘Icon\%d.bmp‘, [Index]);
    Bmp := TBitmap.Create;
    Bmp.LoadFromFile(AFileName);
    PicList.Add(Bmp);
  end;
end;

procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  ACanvas: TCanvas;
  R: TRect;
  Bmp: TBitMap;
begin
  ACanvas := Grid.Canvas;
  Bmp := GetPicture(ACol, ARow);
  if Bmp <> nil then
  begin
    R := Rect;
    R.Left := R.Left + 6;
    R.Top := R.Top + 6;
    {如果使用Canvas的StretchDraw函数,必须加上
    下面两句代码,不过BMP图片还是无法透明}
    //R.Bottom := R.Bottom - 6;
    //R.Right := Bmp.Width;
    {设置BMP的Transparent为真,再用Canvas的
    Draw函数,就可以使BMP透明绘制,不过你需要
    制作透明的BMP图片}
    Bmp.Transparent := True;
    ACanvas.Draw(R.Left, R.Top, Bmp);
    {网上有人说用下面的语句可以透明,但是使用
    函数StretchDraw,还是无法透明}
    //ACanvas.Brush.Style := bsClear;
    //ACanvas.StretchDraw(R, Bmp);
  end;
end;

最后,关于透明BMP图片的制作方法,感兴趣的可以百度一下。

http://www.lsworks.net/article/45.html

时间: 2024-08-09 22:03:03

Delphi之TDrawGrid绘制的相关文章

Delphi GDI对象之绘制位图

http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579334.html 绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难,然而如几次所见到的那样,绘制位图非常容易.TCanvas类具有几种方法绘制位图,最常用的方法是Draw方法,这种方法只是在画布上指定位置绘制位图.用户已经见过几个这样的例子.下面是简短的例子. 1 2 3 4 5 6 7 8 9 procedure TForm1.btn1Click(Sender:

主窗体里面打开子窗体&amp;&amp;打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

\Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass:TFormClass);begin with AFormClass.Create(Self) do try ShowModal;  // 阻塞或者模态窗口,只有你把当前窗口关闭后,才能去操作父亲窗口. finally Free; end;end; //这个例子打开有异常,提示单元chart 引用本

关于Delphi绘制文本的一些记录

var R: TRect;begin//Form1.Canvas.TextOut(20,20, '说明'); R:=Rect(20, 20, 120, 70); DrawText(Canvas.Handle, '说明', -1, R, DT_END_ELLIPSIS);end; //在窗体中使用textout,DrawText或其他.在绘制完文本后窗体最小化或其他操作.使窗体重绘后则文本也会显示. 所以需要注意.另外 绘在image控件上则可以持续输出.其他控件有待观察

Delphi实现RGB色环的代码绘制

function TColorFrm.CreateColorCircle(const size: integer): TBitmap;var i,j,x,y: Integer; radius: integer; perimeter,arc,degree,step: double; R,G,B: byte; color: TColor;begin radius := round(size / 2); RESULT := TBitmap.Create; R:=255; G:=0; B:=0; wit

Delphi如何创建并绘制EMF图形文件

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { P

delphi 绘制二维码

uses vcl.Graphics, DelphiZXingQRCode; procedure CreateQRCode(AImg: vcl.Graphics.TBitMap; const ACode: String); const IMG_SCALE = 25; //放大倍数 var QRCode: TDelphiZXingQRCode; Row, Column: Integer; begin if (AImg = nil) or (Trim(ACode) = '') then Exit; Q

Delphi中canvas(画布)的运用

在DELPHI为编程者提供了一个灵活的绘图场所,即本文所述的    CANVAS类,在DELPHI中的很多控件都具有此属性,使编程者可以    在这些的控件的表面随心所欲的绘图,这对完善用户界面或者制    作一些屏幕特技都有着非凡的作用,下面举例说明几种特殊屏幕    效果的形成过程.       一.CANVAS必备基本知识:       1.具有CANVAS属性的控件:    TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBox,TDirecto

Delphi GDI+基本用法总结

GDI+以前只是听说过,还没怎么用过,这段时间用了用,觉得挺好用的.在这里总结一下.留个备忘. GDI+(Graphics Device Interface plus)是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口.由于它是图形绘制相关的接口,那先了解一下常用的几种图片格式. 常见的图片格式 常见的图片格式有JPEG, BMP, PNG. - JPEG:它用有损压缩方式去除冗余的图像或彩色数据, 获取得极高的压缩率的同

Delphi基本图像处理方法汇总

这篇文章主要介绍了Delphi基本图像处理方法,实例汇总了Delphi操作图像实现浮雕.反色.模糊.翻转等常用效果的方法,非常具有实用价值,需要的朋友可以参考下 本文实例汇总了Delphi基本图像处理方法.分享给大家供大家参考.具体分析如下: //浮雕 procedure Emboss(SrcBmp,DestBmp:TBitmap;AzimuthChange:integer);overload; var i, j, Gray, Azimuthvalue, R, G, B: integer; Sr