文档章节

Delphi 与 DirectX 之 DelphiX(24): TDirectDrawSurface.Blt()、BltFast();

涂孟超
 涂孟超
发布于 2014/09/26 15:30
字数 182
阅读 29
收藏 0

这两个函数可不是一般的麻烦, 特别是 Blt(); 暂时搞不彻底, 这是初步尝试的例子:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DXDraws, StdCtrls, DirectX;

type
  TForm1 = class(TForm)
    DXDraw1: TDXDraw;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  ImgPath1 = 'C:\Temp\DelphiX.bmp';
  ImgPath2 = 'C:\Temp\Test.bmp';

procedure TForm1.Button1Click(Sender: TObject);
var
  MySurface: TDirectDrawSurface;
  DF: TDDBltFX;
begin
  MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
  MySurface.LoadFromFile(ImgPath1);
  DXDraw1.Surface.LoadFromFile(ImgPath2);
  DF.dwSize := SizeOf(DF);
  DF.dwDDFX := 0;
  DXDraw1.Surface.Blt(Rect(0, 0, MySurface.Width div 2, MySurface.Height div 2),
                      MySurface.ClientRect,
                      DDBLT_KEYSRC or DDBLT_WAIT,
                      DF,
                      MySurface);
  DXDraw1.Flip;
  FreeAndNil(MySurface);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  MySurface: TDirectDrawSurface;
begin
  MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
  MySurface.LoadFromFile(ImgPath1);
  DXDraw1.Surface.LoadFromFile(ImgPath2);
  DXDraw1.Surface.BltFast(0, 0,
    Bounds(16, 4, Trunc(MySurface.Width * 0.9), Trunc(MySurface.Height * 0.9)),
    DDBLTFAST_SRCCOLORKEY or DDBLTFAST_WAIT,
    MySurface);
  DXDraw1.Flip;
  FreeAndNil(MySurface);
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/01/15/1376678.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
开源游戏框架(转至wiki)

免费和开源引擎,转载自维基 Agar - 一个高级图形应用程序框架,用于2D和3D游戏。 Allegro - 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。 Axiom 引擎 ...

Matrix4X4
2012/04/17
1K
0
delphi各个版本编译开关值

delphi各个版本编译开关值 {$IFDEF VER80} - Delphi 1 {$IFDEF VER90} - Delphi 2 {$IFDEF VER100} - Delphi 3 {$IFDEF VER120} - Delphi 4 {$IFDEF VER130} - Delphi 5 {$IFDEF VER140} - D......

伽罗kapple
2016/03/01
80
0
delphi的日期相加/delphi日期运算

delphi的日期相加/delphi日期运算 分类: DELPHI 我想实現 2007-08-13 12:00:00 与45 的结果变为 2007-08-13 12:45:00 delhpi中日期型数据是可以直接相加减的。 如果是字符串,用StrToDateTi...

vga
2014/01/27
3.3K
0
Delphi 二十四岁, Delphi 10.3.1 发布

Delphi1 是 Borland于1995年2月14日发布,因此2019年2月14日是该产品发布的24周年纪念日。如果你想了解一些关于该产品及其发布的历史,你可以参考文章“22 Years of Delphi and it Still Roc...

程六金
02/19
8.7K
62
C++ bmp位图读取

如何用C++读取 bmp图片格式颜色矩阵 以及显示 首先 简单解释一下bmp文件格式 在 http://paulbourke.net/dataformats/bmp/ 有官方详细解释 bmp 格式文件 分为四个部分 header 文件格式,大小 ...

Ink_cherry
2017/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部