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



    这两个函数可不是一般的麻烦, 特别是 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.
    

  • 相关阅读:
    分析函數
    C# 使用字典将枚举转换为String
    greenplum 从oracle数据源导入数据
    rsync 快速同步文件
    修改docker容器端口映射
    EasyExcel · 写excel
    Java原生图片Base64转码与Base64解码
    SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX
    JPA自动生成POJO
    js实现图片预览翻页
  • 原文地址:https://www.cnblogs.com/del/p/1376678.html
Copyright © 2020-2023  润新知