gdi+内存绘图

#include "gdi.h"//自己封装的GDI+库



::Graphics::TBitmap * bmp1;
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    GdiInit();
    bmp1 = new ::Graphics::TBitmap;
    bmp1->Width = 500;
    bmp1->Height= 100;
}

void __fastcall TForm1::FormPaint(TObject *Sender)
{
   GdiCreateHandle1(bmp1->Canvas->Handle);

    //GdiClear(0xff000000);

    bmp1->Canvas->Brush->Color = 0xffD8E9EC;
    bmp1->Canvas->FillRect(TRect(0,0,300,500));
    GdiSetFont("微软雅黑",20);
    GdiDrawString(Now(),20,20,0xfff00f00);


    TRect a(0,0,500,100);
    TRect b(0,0,500,100);

    Canvas->CopyMode = SRCCOPY;
    Canvas->CopyRect(a,bmp1->Canvas,b);

    GdiReleaseGraphics();
}
先将图形绘制到TBitmap的TCanvas上,等绘制完成后,再将其拷贝到要显的另一个Canvas上,这样也是实现“双绘冲”。
应该和创建内存DC的效果是一样的,只是由于C++builder的封装性,处理更方便。常规创建内存DC的方法如下:
HDC hDC= ::GetDC(NULL);
HDC hComDC = ::CreateCompatibleDC(hDC); //创建个内存DC;
HBITMAP hBitMap = ::CreateCompatibleBitmap(hDC,1024,768);
::SelectObject(hComDC,hBitMap);
COLORREF clrj = ::GetPixel(hComDC, x, y); 

可以GDI和GDI+交替在bmp1上画图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值