本例效果图:

代码文件:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

procedure FormPaint(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI;

var

n: Single = 0.75; {缩放倍数}

procedure TForm1.FormCreate(Sender: TObject);

begin

ListBox1.Align := alRight;

with ListBox1.Items do

begin

add('InterpolationModeInvalid ');

add('InterpolationModeDefault ');

add('InterpolationModeLowQuality ');

add('InterpolationModeHighQuality ');

add('InterpolationModeBilinear ');

add('InterpolationModeBicubic ');

add('InterpolationModeNearestNeighbor ');

add('InterpolationModeHighQualityBilinear');

add('InterpolationModeHighQualityBicubic ');

end;

ListBox1.ItemIndex := 1;

end;

procedure TForm1.FormPaint(Sender: TObject);

var

g: TGPGraphics;

img: TGPImage;

rt: TGPRectF;

begin

g := TGPGraphics.Create(Self.Canvas.Handle);

img := TGPImage.Create('C:\temp\test.png');

g.DrawImage(img, 4, 4, img.GetWidth, img.GetHeight);

rt := MakeRect(4+img.GetWidth+4, 4, img.GetWidth * n, img.GetHeight * n);

g.SetInterpolationMode(ListBox1.ItemIndex - 1);

g.DrawImage(img, rt, 0, 0, img.GetWidth, img.GetHeight, UnitPixel);

img.Free;

g.Free;

end;

procedure TForm1.ListBox1Click(Sender: TObject);

begin

Repaint;

end;

end. 窗体文件:

object Form1: TForm1

Left = 0

Top = 0

Caption = 'Form1'

ClientHeight = 213

ClientWidth = 550

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'Tahoma'

Font.Style = []

OldCreateOrder = False

Position = poDesktopCenter

OnCreate = FormCreate

OnPaint = FormPaint

PixelsPerInch = 96

TextHeight = 13

object ListBox1: TListBox

Left = 357

Top = 32

Width = 185

Height = 97

ItemHeight = 13

TabOrder = 0

OnClick = ListBox1Click

end

end 缩放时的算法模式(TInterpolationMode 枚举)列表:

InterpolationModeInvalid = -1; {等效于 QualityMode 枚举的 Invalid 元素. }

InterpolationModeDefault = 0; {指定默认模式. }

InterpolationModeLowQuality = 1; {指定低质量插值法. }

InterpolationModeHighQuality = 2; {指定高质量插值法. }

InterpolationModeBilinear = 3; {指定双线性插值法. 不进行预筛选. 将图像收缩为原始

大小的 50% 以下时,此模式不适用. }

InterpolationModeBicubic = 4; {指定双三次插值法. 不进行预筛选. 将图像收缩为原始

大小的 25% 以下时,此模式不适用. }

InterpolationModeNearestNeighbor = 5; {指定最临近插值法. }

InterpolationModeHighQualityBilinear = 6; {指定高质量的双线性插值法. 执行预筛选以确保高质量

的收缩. }

InterpolationModeHighQualityBicubic = 7; {指定高质量的双三次插值法. 执行预筛选以确保高质量

的收缩. 此模式可产生质量最高的转换图像. }

mysql img格式缩放,再学 GDI+[89]: TGPImage(9) - 图像缩放时的质量(算法)相关推荐

  1. 再学 GDI+[81]: TGPImage(1) - 显示图像

    已知 GDI+ 可以支持的图像格式: BMP.JPEG.GIF.TIFF.PNG.ICO.WMF.EMF TGPGraphics.DrawImage 函数有太多重载了, 一起列在这吧: functio ...

  2. 再学 GDI+[98]: TGPImage(18) - 获取 GDI+ 图像格式对应的 GUID

    和在 Net 中不同的是, 在具体指定图像格式时, 这里常常需要的不是格式名称, 而是格式的 GUID; 知道了格式名称, 用 GetEncoderClsid 函数可以获取格式的 GUID; GetE ...

  3. 再学 GDI+[83]: TGPImage(3) - 平行四边形变换

    为什么80%的码农都做不了架构师?>>>    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, V ...

  4. 再学 GDI+[91]: TGPImage(11) - 转灰度图像

    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Contr ...

  5. 再学 GDI+[94]: TGPImage(14) - 增减图像的红、绿、蓝三色的成分

    为什么80%的码农都做不了架构师?>>>    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, V ...

  6. 再学 GDI+[86]: TGPImage(6) - 拖动图像

    为什么80%的码农都做不了架构师?>>>    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, V ...

  7. 再学 GDI+[57]: 路径 - Widen

    为什么80%的码农都做不了架构师?>>>    路径的 Widen 方法可以把路径中的线, 根据指定画笔的宽度与样式, 转换为一个范围(有点类似区域); 但转换后再描绘路径就只能使用 ...

  8. 再学 GDI+[56]: 路径 - Warp

    为什么80%的码农都做不了架构师?>>>    通过路径的 Warp 方法可以让路径在一个范围内(四个点决定的范围)变换; 第一个参数可以是 3 个点或 4 个点的数组, 如果是 3 ...

  9. 再学 GDI+[11]: DrawCurve - 绘制曲线

    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Contr ...

最新文章

  1. spring mvc 总体启动流程
  2. java上传文件到ftp_java实现文件上传下载至ftp服务器
  3. 70%以上程序员,不懂数据结构和算法!
  4. micro asyn wininet
  5. Eureka和Zookeeper区别 —— 杂记
  6. vb中line的用法[转]
  7. 如何入行Android开发
  8. 贵州大学计算机科学与技术学院排名,贵州大学的计算机专业全国排名第几?
  9. 桌面APP打包利器 —— Node-webkit
  10. 重新认识下科技核心目录吧!附容易发的期刊名单
  11. 微信html5电子相册,维本- 电子相册微信H5模板【h5特效】
  12. Win7安装MarkdownPad2破解版,报Awesomium.Windows.Controls.WebControl 错误的解决方案
  13. BUUCTF MISC刷题
  14. 蓝牙音乐SRC侧的安卓实现
  15. 按键触发快捷怼人小工具(怼人必备良药)
  16. 优化理论20---插值法: Hermite插值法、龙格现象、分段插值、样条插值
  17. 以太坊中的账户、交易、Gas和区块Gas Limit等基本概念
  18. 非师范生教师资格证最新政策
  19. PostgreSQL-12 通过归档WAL日志同步主备数据
  20. 软件设计的三重境界:守-破-离

热门文章

  1. linux硬盘温度,linux查看硬盘温度跟使用情况
  2. mysql中的float_mysql里float是什么东西
  3. 性能压测服务器502报错,一种交易系统的性能测试方法及相关服务器
  4. [Spring mvc 深度解析(三)] 创建Spring MVC之器
  5. iOS使用Workspace来管理多项目
  6. 【PHPWord】页面Section
  7. 大数据 防范脱贫人口返贫_男性比女性多出3047万,从人口大数据看,房价会涨还是跌?...
  8. window mysql安全设置_mysql安全配置方案
  9. java如何用c 的方法_JAVA如何调用C/C++方法
  10. python2.7和3.5相互兼容吗_以与Python 2.7和Python 3.5兼容的方式使用abc.ABCMeta