知识大全 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图形图像编程(二)[3]

DELPHI基础教程:Delphi图形图像编程(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Delphi图形图像编程(一)[2]

DELPHI基础教程:Delphi图形图像编程(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Delphi图形图像编程(一)[3]

DELPHI基础教程:Delphi图形图像编程(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Delphi图形图像编程(一)[1]

DELPHI基础教程:Delphi图形图像编程(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Delphi编程访问注册表(二)

Delphi编程访问注册表(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  二编程思想  (

知识大全 Delphi面向对象的编程方法(二)

Delphi面向对象的编程方法(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 SQL编程(二)[2]

DELPHI基础教程:SQL编程(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ta

知识大全 动态链接库编程(二)[2]

DELPHI基础教程:动态链接库编程(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 数据浏览部件的应用及编程(二)[2]

DELPHI基础教程:数据浏览部件的应用及编程(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 数据访问部件的应用及编程(二)[2]

DELPHI基础教程:数据访问部件的应用及编程(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一