mgplus库在绘制线条,弧线方面比较厉害,比MiniGUI核心库的一些函数(比如画线函数和rectangle画矩形函数)强大,并且没有锯齿。但是一开始在创建HGRAPHICS句柄的时候,有好几个函数都可以使用,但是每个函数的使用又会影响后面绘制内容时的具体用法,这里记录一下:
1. MGPlusGraphicCreate(width,height)
该函数创建句柄的时候不需要hdc,所以可以在控件的MSG_CREATE消息中调用,然后在控件的MSG_DESTROY中销毁,这样只需创建和销毁一次即可。在paint的时候,可以直接使用这个句柄。 但是绘制具体内容的时候,需要先调用MGPlusGraphicCopyFromDC()将目前hdc中的内容拷贝一下,然后再调用mgplus具体的绘制函数去绘制(如MGPlusDrawRectangle()),并且绘制完还要调用MGPlusGraphicSave()将绘制内容显示到hdc中,每次绘制都需要这样: 先拷贝,再绘制,再
save.(如果是两次连续绘制的话,则是:拷贝-绘制-绘制-save)
2. MGPlusGraphicCreateFromDC(hdc) 和 MGPlusGraphicCreateWithoutCanvas(hdc)
这两个函数由于创建时需要hdc,所以需要在MSG_PAINT中使用,也就会导致频繁创建和销毁;同时这两个函数在使用时,也是有区别的:
MGPlusGraphicCreateFromDC(hdc) 在使用的时候如(1)中所说,也是先拷贝,再绘制,再save。 MGPlusGraphicCreateWithoutCanvas(hdc) 在使用的时候既不需要拷贝hdc,也不需要save,直接就能将绘制的内容显示到hdc中,比较方便。