文档章节

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
500
0
C# WinForm开发系列 - GDI+

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

长征2号
2017/11/14
0
0
WinForm版图像编辑小程序(实现图像拖动、缩放、旋转、抠图)

闲暇之余,开发一个图片编辑小程序。程序主要特点就是可方便的对多个图像编辑,实现了一些基本的操作。本文主要介绍一下程序的功能、设计思路。 下载地址:百度网盘。https://pan.baidu.com...

源之缘
12/05
0
0
C#中基于GDI+(Graphics)图像处理系列之任意角度旋转图像

简介 图像旋转功能在实际使用中出现得不多,Image自带RotateFlip方法可以简单的实现90、180等角度的旋转或者翻转,但是如果要实现任意角度的旋转该怎么做?对于一个有经验的同学估计不到半天...

lhtzbj12
2017/01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式Session共享解决方案

分布式Session一致性? 说白了就是服务器集群Session共享的问题 Session的作用? Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。 客户端在第一次访...

Java干货分享
15分钟前
1
0
开源软件和开源模式面临的生存危机

导读 开源模式可能正面临一场危机。越来越多的开源软件和平台被大型云计算服务商融入自家的云服务体系,并以此获利颇丰,但并不支付费用,也没有对开源社区做出相应的回馈。而实际上,大部分...

问题终结者
17分钟前
0
0
让看不见的AI算法,助你拿下看得见的广阔市场

人工智能技术的飞速发展给各行各业都带来了深远的影响,AI已被视为企业提升运营效能、应对市场竞争的必经之路。然而对于一些企业而言,让AI真正实现落地和应用,并且创造价值,仍是一件需要努...

个推
21分钟前
0
0
用SAN还是NAS?我来告诉你

存储区域网络(SAN)是以一种结构连接的存储,通常通过交换机连接,使许多不同的服务器能够轻松访问存储设备。从服务器应用程序和操作系统的角度来看,访问SAN中的数据存储或直接连接的存储之间...

linux-tao
24分钟前
0
0
centos7 部署Apache服务器

centos7 部署Apache服务器 置顶 2017年09月05日 09:12:49 师太,老衲把持不住了 阅读数:19700 飞翔科技 2017-09-04 16:24 Apache程序是目前拥有很高市场占有率的Web服务程序之一,其跨平台和...

linjin200
57分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部