知识大全 Delphi图形图像编程(二)[2]
Posted 知
篇首语:怀抱观古今,寝食展戏谑。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi图形图像编程(二)[2]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:Delphi图形图像编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
另外一个问题是 我们希望得到的是鼠标按钮按下和松开这两点所形成的图形 但OnMouseMove却把鼠标轨迹上各点与起始点所形成的所有图形画在屏幕上 这同样是我们不希望看到的 为了解决这些问题 程序定义了鼠标的三个事件
procedure TForm FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X Y: Integer)
begin
Drawing := True;
Image Canvas MoveTo(X Y)
Origin := Point(X Y)
MovePt := Origin;
OriginPanel Caption := Format( Origin: (%d %d) [X Y])
end;
procedure TForm FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X Y: Integer)
begin
if Drawing then
DrawShape(Origin Point(X Y) pmCopy)
Drawing := False;
end;
procedure TForm FormMouseMove(Sender: TObject; Shift: TShiftState; X
Y: Integer)
begin
if Drawing then
begin
DrawShape(Origin MovePt pmNotXor)
MovePt := Point(X Y)
DrawShape(Origin MovePt pmNotXor)
end;
MovePt用来记录鼠标当前位置 当下次鼠标移动时 就能在上次鼠标绘制的图形上画一个形状 大小一样的图形 并把画笔颜色设置成PmNotXor 使上次绘制的图形颜色变成了屏幕颜色 从而达到 橡皮擦 的效果
将画笔 画刷的Style属性设置成用户希望的值 可实现对画笔和画刷风格的选择
procedure TForm SetBrushStyle(Sender: TObject)
begin
with Image Canvas Brush do
begin
if Sender = SolidBrush then Style := bsSolid
else if Sender = ClearBrush then Style := bsClear
else if Sender = HorizontalBrush then Style := bsHorizontal
else if Sender = VerticalBrush then Style := bsVertical
else if Sender = FDiagonalBrush then Style := bsFDiagonal
else if Sender = BDiagonalBrush then Style := bsBDiagonal
else if Sender = CrossBrush then Style := bsCross
else if Sender = DiagCrossBrush then Style := bsDiagCross;
end;
procedure TForm SetPenStyle(Sender: TObject)
begin
with Image Canvas Pen do
begin
if Sender = SolidPen then Style := psSolid
else if Sender = DashPen then Style := psDash
else if Sender = DotPen then Style := psDot
else if Sender = DashDotPen then Style := psDashDot
else if Sender = DashDotDotPen then Style := psDashDotDot
else if Sender = ClearPen then Style := psClear;
end;
end;
图像对象概述
TGraphic对象
TGraphic对象是TBitmap TIcon Tmetafile对象的基类 如果知道图像的具体类型( 如位图 图标元文件) 则应将图像贮存在相应类型的对象中( 如TBitmap TIcon Tmetafile) 否则应该使用可贮存任何图像类型的TPicture对象
TPicture对象
TPicture对象可以保存位图 图标或元文件 Graphic属性中包括图像的类型 图像的高度和宽度分别定义在Height Width属性中 调用LoadFromFile方法 可以从文件中装载一幅图像
procedure TForm FormCreate(Sender: TObject)
begin
BitBtn Glyph LoadFromFile( TARTAN BMP )
end;
要保存一个位图 则要用SaveToFile方法 要把图像复制到剪切板 可以调用TClipboard对象的Assign方法
TImage部件
TImage部件用以在窗体中显示图像 它的Picture 属性保存着要显示的图像 这是一个TPicture对象 AutoSize Stretch属性是用来调节部件与图像的大小的 当AutoSize 为真值时 TImage部件将根据它所包含的图像的大小来调整自身的大小 当AutoSize为假值时 不论图像有多大 部件将保持设计时的大小 如果部件比图像小 那么只有一部分图像是可见的 当Stretch为真值时 位图像将根据部件的大小调整自身的大小 当部件大小改变时 元文件也做相应变化 Stretch属性对图标没有作用
TBitmap Object(位图对象)
位图对象包含一个位图图像 有HBITMAP HPALETE句柄 可自动管理调色板 位图对象也有画布属性 位图的Palette属性用来控制位图的颜色映射 它包括 种可显示的颜色 如果应用程序用前景色绘制位图 Palette 属性的颜色将被加入Windows系统调色板 其它颜色被映射到系统调色板已存在的颜色 如果应用程序用自己的颜色绘制位图 而其它程序已占有系统调色板 位图的颜色将被映射到系统调色板中
如果Monochrome属性设置成假 位图将显示成彩色 反之显示成黑白色
调用Draw和StretchDraw方法可在画布上绘制位图
图像对象的应用
本章例程中 单击(文件|浏览)菜单项 将弹出一个图像浏览窗体 如果用户在窗体中选择文件列表框的图形文件 窗体右上角的图像部件上将出现此文件所代表的图像 若选择 雕刻效果 按钮中检查框 窗体中的加速按钮和位图按钮上将出现位图
以下代码是将图像文件装载至图像部件上
procedure TImageForm FileListBox Click(Sender: TObject)
var
FileExt: string[ ];
begin
FileExt := UpperCase(ExtractFileExt(FileListBox Filename))
if (FileExt = BMP ) or (FileExt = ICO ) or (FileExt = WMF ) then
begin
Image Picture LoadFromFile(FileListBox Filename)
Label Caption := ExtractFilename(FileListBox Filename)
if (FileExt = BMP ) then
begin
Label Caption := Label Caption +
Format( (%d x %d) [Image Picture Height Image Picture Width])
ViewForm Image Picture Bitmap := Image Picture Bitmap;
ViewAsGlyph(FileExt)
end;
if FileExt = ICO then Icon := Image Picture Icon;
if FileExt = WMF then
ViewForm Image Picture Metafile := Image Picture Metafile;
end;
end;
这个过程首先判断文件类型 如果是图像文件 则将图像装载至图像部件上 并在标签上列出文件名称 如果是位图文件 还将显示其大小
cha138/Article/program/Delphi/201311/25244相关参考
DELPHI基础教程:Delphi图形图像编程(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
Delphi编程访问注册表(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 二编程思想 (
Delphi面向对象的编程方法(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:SQL编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Ta
DELPHI基础教程:动态链接库编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:数据浏览部件的应用及编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:数据访问部件的应用及编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一