{相关结构}
TD2D1BitmapBrushProperties = record
extendModeX: D2D1_EXTEND_MODE; //三个可选值分别是:0(延伸)、1(换行)、2(镜像)
extendModeY: D2D1_EXTEND_MODE; //同上
interpolationMode: D2D1_BITMAP_INTERPOLATION_MODE; //拉伸图像时的差值算法:0(高速低质)、1(高质低速)
end;
测试代码:
uses Direct2D, D2D1;
procedure TForm1.FormPaint(Sender: TObject);
var
cvs: TDirect2DCanvas;
iBrush: ID2D1BitmapBrush;
rBBP: TD2D1BitmapBrushProperties;
R: TRect;
bit: TBitmap;
begin
bit := TBitmap.Create;
bit.LoadFromFile('C:\Temp\Test.bmp');
cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
R := ClientRect;
rBBP.extendModeX := D2D1_EXTEND_MODE_MIRROR;
rBBP.extendModeY := D2D1_EXTEND_MODE_WRAP;
rBBP.interpolationMode := D2D1_BITMAP_INTERPOLATION_MODE_LINEAR;
cvs.RenderTarget.CreateBitmapBrush(cvs.CreateBitmap(bit), @rBBP, nil, iBrush);
cvs.Brush.Handle := iBrush;
//cvs.Brush.Bitmap := bit; //如果是简单平铺,可以用这句代替上面五行
cvs.Pen.Width := 0;
cvs.BeginDraw;
cvs.Rectangle(R);
cvs.EndDraw;
cvs.Free;
bit.Free;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Repaint;
end;
效果图:
浙公网安备 33010602011771号