C++Builder利用TDirect2DCanvas的一些注意事项

1、用TDirect2DCanvas单次创建多次绘制,耗时比多次创建多次高精度绘制提高26倍,比VCL提高3倍。

 ##绘制2880*1800时#绘制BMP375毫秒,绘制精度0,###保存图片634毫秒 VCL
 ##绘制2880*1800时#绘制BMP3.0秒,  绘制精度1,###保存图片3.2秒   TDirect2DCanvas多次创建多次高精度绘制
 ##绘制2880*1800时#绘制BMP115毫秒,绘制精度1,###保存图片346毫秒 TDirect2DCanvas单次创建多次高精度绘制
 ##绘制2880*1800时TDirect2DCanvas单次创建多次高精度绘制耗时比多次创建多次高精度绘制提高26倍,比VCL提高3倍


2、用TDirect2DCanvas,画完后不显示,这时需要在EndDraw()后调用VCL的Canvas函数绘制一次,比如mCanvas->TextOut(-10, -10, "");。

3、追加:字体大小不能为0,Font->Size,LOGFONT lFont中的lFont.lfHeight都不能为0,程序中要判断。

下面是参考代码:


TCanvas *mCanvas = Image1->Picutre->Bitmap->Canvas;
Direct2d::TDirect2DCanvas *d2dCanvas;

d2dCanvas = new Direct2d::TDirect2DCanvas(mCanvas, mCanvas->ClipRect);
if (!d2dCanvas->Supported())
{
	delete d2dCanvas;
	d2dCanvas = NULL;
	ShowMessage("操作系统不支持Direct2d");
	return;
}

d2dCanvas->RenderTarget->SetAntialiasMode(D2D1_ANTIALIAS_MODE_PER_PRIMITIVE);

d2dCanvas->BeginDraw();

// 其他绘图函数

d2dCanvas->EndDraw();

delete d2dCanvas;
d2dCanvas = NULL;
// EndDraw()后必须调用VCL的Canvas函数绘制一次,否则TDirect2DCanvas的绘制结果不能在VCL的Canvas显示出来。一般情况下是这样的。
mCanvas->TextOut(-10, -10, "");

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值