文档章节

Direct2D (9) : 显示图像

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 251
阅读 23
收藏 0

uses Direct2D;

procedure TForm1.FormPaint(Sender: TObject);
var
  cvs: TDirect2DCanvas;
  wic: TWICImage;
  R: TRect;
begin
  wic := TWICImage.Create;
  wic.LoadFromFile('C:\Temp\Test.png');

  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  cvs.BeginDraw;

  cvs.Draw(10, 10, wic);

  R := Bounds(wic.Width div 2 + 10, wic.Height div 2 + 10, wic.Width div 2, wic.Height div 2);
  cvs.StretchDraw(R, wic, 192);

  cvs.EndDraw;
  cvs.Free;
  wic.Free;
end;


效果图:



用较原始的办法重做上面的例子(通过 wic):

uses Direct2D, D2D1, Wincodec, ActiveX;

{从指定文件建立 ID2D1Bitmap 对象的函数}
function GetD2D1Bitmap(RenderTarget: ID2D1RenderTarget; imgPath: string): ID2D1Bitmap;
var
  iWicFactory: IWICImagingFactory;
  iWICDecoder: IWICBitmapDecoder;
  iWICFrameDecode: IWICBitmapFrameDecode;
  iFormatConverter: IWICFormatConverter;
begin
  {获取建立 WIC 的工厂}
  CoCreateInstance(CLSID_WICImagingFactory, nil, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, iWicFactory);
  {打开并获取解码后的对象}
  iWicFactory.CreateDecoderFromFilename(PWideChar(imgPath), GUID_NULL, GENERIC_READ, WICDecodeMetadataCacheOnLoad, iWICDecoder);
  {获取第一帧}
  iWicDecoder.GetFrame(0, iWICFrameDecode);
  {获取格式转换器}
  iWicFactory.CreateFormatConverter(iFormatConverter);
  {转换到与 D2D 兼容的格式}
  iFormatConverter.Initialize(iWICFrameDecode, GUID_WICPixelFormat32bppPBGRA, WICBitmapDitherTypeNone, nil, 0, WICBitmapPaletteTypeMedianCut);
  {获取 ID2D1Bitmap}
  RenderTarget.CreateBitmapFromWicBitmap(iFormatConverter, nil, Result);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  cvs: TDirect2DCanvas;
  iBitmap: ID2D1Bitmap;
  fRect: TD2DRectF;
  fSize: TD2DSizeF;
begin
  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  iBitmap := GetD2D1Bitmap(cvs.RenderTarget, 'C:\Temp\Test.png');

  iBitmap.GetSize(fSize);
  fRect := D2D1RectF(0, 0, fSize.width, fSize.height);
  cvs.BeginDraw;
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation(10, 10));
  cvs.RenderTarget.DrawBitmap(iBitmap, @fRect);

  fRect := D2D1RectF(0, 0, fSize.width/2, fSize.height/2);
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation(fRect.right+10, fRect.bottom+10));
  cvs.RenderTarget.DrawBitmap(iBitmap, @fRect, 0.75);

  cvs.EndDraw;
  cvs.Free;
end;


本文转载自:http://www.cnblogs.com/del/archive/2011/04/01/2002254.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
硬件加速:浏览器大战的新前沿

硬件加速:浏览器大战的新前沿 作者:Frederic Lardinois / 2009年11月24日 9:04AM 微软在本月初召开的专业开发者大会(Professional Developers Conference)上宣布了其最新的IE9计划,微软在...

老枪
2009/11/26
189
0
图表编辑器TMS Diagram Studio更新至v4.14,支持RAD Studio 10.2 Tokyo

TMS Diagram Studio是一款功能强大的图表控件,专为您的应用程序添加示意图和流程图表。 TMS Diagram Studio点击下载>>> v4.14 改进:更改handle检测的顺序。 修复:预览/打印错误。 修复:T...

Harriet666
2017/10/19
0
0
关于Direct3D11里汉字显示的一些思考

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/8147234 作者:毛星云 邮箱: happylifemxy@163.com 这篇文章里,浅墨希望与大家一起...

长平狐
2012/11/12
690
0
2D 图像渲染--Win2D

Win2D 是一个易用的 Windows Runtime API,它能通过 GPU 加速,即时建立 2D 图像的渲染模型。C# 和 C++ 开发者可以用它开发 Windows 8.1 、Windows Phone 8.1 和 Windows 10 的应用程序。Win...

孔小菜
2015/04/30
1K
0
WhiteStarUML 5.6.3 发布,UML 建模工具

WhiteStarUML 5.6.3 发布,主要改进如下: 现在滚动启用了 Direct2D 的图像会有更好性能(之前会有明显的卡顿感) 基于现有stereotype 选择已标记值的操作应该更加容易 现在通过 Rational 扩...

daxiaoming
2015/04/25
3.6K
6

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
6
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部