delphixe6中的DirectX

delphixe6中的DirectX,delphi,directx,delphi-xe6,Delphi,Directx,Delphi Xe6,我希望加载多个DDS文件到一个表单上,但不确定从哪里开始 我已经看过了Asphyre Sphinx 3和Delphi的DX11_JSB头文件,但我不确定XE6是否适合这个环境 XE6和Direct X的文档很少 我不能发布任何源代码,因为我不知道从哪里开始 将这些DDS文件加载到我的表单上的最佳方式是什么(有点像地图查看器/编辑器,我可以在其中放大和缩小,等等) 因此,这将正确地将图像加载到表单中,但现在我想放大和缩小,当我按住鼠标左键时,您可以拖动到图像地图上的另一个位置。在我看来,您在完成这

我希望加载多个DDS文件到一个表单上,但不确定从哪里开始

我已经看过了Asphyre Sphinx 3和Delphi的DX11_JSB头文件,但我不确定XE6是否适合这个环境

XE6和Direct X的文档很少

我不能发布任何源代码,因为我不知道从哪里开始

将这些DDS文件加载到我的表单上的最佳方式是什么(有点像地图查看器/编辑器,我可以在其中放大和缩小,等等)


因此,这将正确地将图像加载到表单中,但现在我想放大和缩小,当我按住鼠标左键时,您可以拖动到图像地图上的另一个位置。

在我看来,您在完成这一切方面做得很好。是的,谢谢,我对该主题做了一些研究。我有一种感觉,缩放将变得更加困难。我不想开始一个新的话题,但是
FRenderTarget:ID2D1HwndRenderTarget
画布:TDirect2DCanvas两者都可以完美地渲染到表单,但大多数示例都使用第一个进行渲染。
const
  caly_00 = 'E:\Delphi Projects\OpenP\Maps\map_cal_0.dds';
  caly_01 = 'E:\Delphi Projects\OpenP\Maps\map_cal_1.dds';
  caly_02 = 'E:\Delphi Projects\OpenP\Maps\map_cal_2.dds';
  caly_03 = 'E:\Delphi Projects\OpenP\Maps\map_cal_3.dds';
  caly_04 = 'E:\Delphi Projects\OpenP\Maps\map_cal_4.dds';
  caly_05 = 'E:\Delphi Projects\OpenP\Maps\map_cal_5.dds';

procedure TForm2.FormPaint(Sender: TObject);
var
  cvs: TDirect2DCanvas;
  iBitmapBrush: ID2D1BitmapBrush;
  iBitmap_Caly_0, iBitmap_Caly_1, iBitmap_Caly_2, iBitmap_Caly_3, iBitmap_Caly_4, iBitmap_Caly_5: ID2D1Bitmap;
  Size0, Size1, Size2, Size3, Size4, Size5: TD2DSizeF;
  i: integer;
begin
  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  iBitmap_Caly_0 := GetD2D1Bitmap(cvs.RenderTarget, Caly_00);
  iBitmap_Caly_0.GetSize(Size0);
  iBitmap_Caly_1 := GetD2D1Bitmap(cvs.RenderTarget, Caly_01);
  iBitmap_Caly_1.GetSize(Size1);
  iBitmap_Caly_2 := GetD2D1Bitmap(cvs.RenderTarget, Caly_05);
  iBitmap_Caly_2.GetSize(Size2);
  iBitmap_Caly_3 := GetD2D1Bitmap(cvs.RenderTarget, Caly_04);
  iBitmap_Caly_3.GetSize(Size3);
  iBitmap_Caly_4 := GetD2D1Bitmap(cvs.RenderTarget, Caly_03);
  iBitmap_Caly_4.GetSize(Size4);
  iBitmap_Caly_5 := GetD2D1Bitmap(cvs.RenderTarget, Caly_02);
  iBitmap_Caly_5.GetSize(Size5);

  cvs.BeginDraw;
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation(0, 0));
  cvs.RenderTarget.DrawBitmap(iBitmap_Caly_0, nil, 1, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, nil);
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation(Size0.Height, 0));
  cvs.RenderTarget.DrawBitmap(iBitmap_Caly_1, nil, 1, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, nil);
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation(Size1.Height, Size2.Width));
  cvs.RenderTarget.DrawBitmap(iBitmap_Caly_2, nil, 1, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, nil);
  cvs.RenderTarget.SetTransform(TD2DMatrix3x2F.Translation(0, Size0.Width));
  cvs.RenderTarget.DrawBitmap(iBitmap_Caly_3, nil, 1, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, nil);
  cvs.EndDraw;
  cvs.Free;
end;