Direct2D (13) : 画刷之 ID2D1BitmapBrush



{相关结构}

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;



效果图:

Direct2D (13) : 画刷之 ID2D1BitmapBrush

你可能感兴趣的:(bitmap)