文档章节

GDI+ 学习记录(26): 显示图像 - Image

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 600
阅读 10
收藏 0
//显示图像
var
  g: TGPGraphics;
  img: TGPImage;
begin
  g := TGPGraphics.Create(Self.Canvas.Handle);

  img := TGPImage.Create('c:\temp\x.jpg');

  g.DrawImage(img,10,10); {参数2、3是坐标}

  img.Free;
  g.Free;
end;

 
 
 
 
 

 

 

  
//按标准的高度与宽度显示图像 var g: TGPGraphics; img: TGPImage; begin g := TGPGraphics.Create(Canvas.Handle); img := TGPImage.Create('c:\temp\x.jpg'); g.DrawImage(img, 10, 10, img.GetWidth, img.GetHeight); img.Free; g.Free; end;
//按指定高度与宽度显示图像 var g: TGPGraphics; img: TGPImage; begin g := TGPGraphics.Create(Canvas.Handle); img := TGPImage.Create('c:\temp\x.jpg'); g.DrawImage(img, 10, 10, 100, 200); img.Free; g.Free; end;
//略缩图 var g : TGPGraphics; img, imgSmall: TGPImage; begin g := TGPGraphics.Create(Canvas.Handle); img:= TGPImage.Create('c:\temp\x.jpg'); imgSmall := img.GetThumbnailImage(48, 60, nil, nil); g.DrawImage(imgSmall, 10, 10, imgSmall.GetWidth, imgSmall.GetHeight); img.Free; imgSmall.Free; g.Free; end;
//图片平行四边形变换 var g: TGPGraphics; img: TGPImage; const pts: array[0..2] of TGPPoint = ((x:300; y:120), (x:210; y:200), (x:350; y:230)); begin g := TGPGraphics.Create(Canvas.Handle); img:= TGPImage.Create('c:\temp\x.jpg'); g.DrawImage(img, 0, 0); {这是原始图片} g.DrawImage(img, PGPPoint(@pts), 3); {反复测试后, 感悟如下: 1、只需要 3 个点来控制图片, 不能多或少. 2、点 1 控制右上角; 点 2 控制左上角; 点 3 控制右下角. 3、因为是平行四边形, 所以剩下的左下角的点(就是右上角的对角点)程序就可以算得出来了. } img.Free; g.Free; end;
//图像缩放时的算法比对 var g: TGPGraphics; img: TGPImage; w, h: UINT; begin g := TGPGraphics.Create(Canvas.Handle); img:= TGPImage.Create('c:\temp\x.jpg'); w := img.GetWidth; h := img.GetHeight; g.DrawImage(img, MakeRect(10, 10, w, h), 0, 0, w, h, UnitPixel); g.SetInterpolationMode(InterpolationModeNearestNeighbor); g.DrawImage(img, MakeRect(10, 250, 0.6*w, 0.6*h), 0, 0, w, h, UnitPixel); g.SetInterpolationMode(InterpolationModeHighQualityBilinear); g.DrawImage(img, MakeRect(150, 250, 0.6*w, 0.6*h), 0, 0, w, h, UnitPixel); g.SetInterpolationMode(InterpolationModeHighQualityBicubic); g.DrawImage(img, MakeRect(290, 250, 0.6*w, 0.6*h), 0, 0, w, h, UnitPixel); img.Free; g.Free; end;
缩放或旋转图像时的算法选项:

Delphi 微软 说明
InterpolationModeBicubic Bicubic 指定双三次插值法。不进行预筛选。将图像收缩为原始大小的 25% 以下时,此模式不适用。
InterpolationModeBilinear Bilinear 指定双线性插值法。不进行预筛选。将图像收缩为原始大小的 50% 以下时,此模式不适用。
InterpolationModeDefault Default 指定默认模式。
InterpolationModeHigh High 指定高质量插值法。
InterpolationModeHighQualityBicubic HighQualityBicubic 指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。
InterpolationModeHighQualityBilinear  HighQualityBilinear  指定高质量的双线性插值法。执行预筛选以确保高质量的收缩。
InterpolationModeInvalid Invalid 等效于 QualityMode 枚举的 Invalid 元素。
InterpolationModeLow Low 指定低质量插值法。
InterpolationModeNearestNeighbor NearestNeighbor 指定最临近插值法。


本文转载自:http://www.cnblogs.com/del/archive/2007/12/27/1017604.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
VC实现多格式图像的转换

色彩鲜艳漂亮的高品质图像,一个个形象生动的Windows图标,高速运动、活灵活现的三维动画,这些无一不显示出程序设计者的艺术才华。在程序设计中,图像处理已经成为每个程序员的必修课。 在V...

余二五
2017/11/06
0
0
GDI+图像处理学习笔记——改变图像的透明度

GDI+是WindowsXp和windows Server 2003中的一个子系统,主要用于处理系统的绘制消息。GDI+是GDI的扩展,其继承了GDI的有点并在其基础上进行了改进,包括增加了一些GDI无法绘制的图形函数,同...

晨曦之光
2012/05/23
491
0
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号
2017/11/14
0
0
在.net中使用GDI+来提高gif图片的保存画质

//本文章有www.blue1000.com翻译,原文地址http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/6103.aspx //尊重他人劳动成果,转载请注明出处。 写程序的时候经常用到gdi+,...

晨曦之光
2012/03/09
81
0
在OpenCV中实现特效之浮雕,雕刻和褶皱

在OpenCV中实现特效之浮雕,雕刻和褶皱 分类: OpenCV2011-05-24 17:18 501人阅读 评论(7) 收藏 举报 下面代码的基础是对图像像素的访问。 实现浮雕和雕刻的代码是统一的,如下 原图为 浮雕效...

晨曦之光
2012/05/28
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
45分钟前
1
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
57分钟前
1
0
DbForge Schema Compare for MySQL入门教程:如何连接到数据库

【dbForge Schema Compare for MySQL下载】 要创建连接: 1. 在“Connection” 工具栏上单击“New Connection”按钮 。 2. 在“Host” 框中输入主机名。 3. 在“Port” 框中输入端口信息。默...

Miss_Hello_World
今天
1
0
spring中事务的应用

spring中事务管理的两种方式 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务是建立...

狂奔的熊二
今天
0
0
公众号关联微信小程序

公众号关联小程序发送关联通知,对于推广小程序有着很大的帮助。所以问题来了,怎么做到在公众号关联小程序发送关联通知呢? 一:开发中遇到的问题 之前在开发过程中发现,公众号已经关联小程...

Code辉
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部