C++ 逐像素快速绘图

三四个窗口分别要经常绘制500*500左右的图像,由于一些原因只能逐像素计算颜色。如果用WIndowsAPI的话画一次就要花不少时间。又觉得用DirectX什么的太大动干... 三四个窗口分别要经常绘制500*500左右的图像,由于一些原因只能逐像素计算颜色。如果用WIndowsAPI的话画一次就要花不少时间。又觉得用DirectX什么的太大动干戈了。有没有什么逐像素绘图的快速方法。
目前是MFC结构最好不要变……
展开
 我来答
金色潜鸟
2013-05-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5726万
展开全部
逐像素快速绘图就是画方块。img_w 为宽度(像素点数)img_h为高度(像素点数)
像素信息存放在
img = (COLORREF *) malloc (sizeof(COLORREF) * img_w * img_h);
API 在 case WM_PAINT: 里画,MFC 可以在 OnDraw() 里画.
API 里的绘图语句是,MFC 大同小异:
for (j=0;j<img_h;j++){
for (i=0;i<img_w;i++){
hBr = CreateSolidBrush(img[k]); k++;
SelectObject(hdc,hBr);
RectX.left= x_shift + i; RectX.right=RectX.left+ 1;
RectX.bottom = y_shift + j; RectX.top = RectX.bottom + 1;
FillRect(hdc, &RectX, hBr);
DeleteObject(hBr);
}
}
画得很快。
更多追问追答
追问
这方法恐怕连for()for()SetPixel()的速度都赶不上吧……我希望能做到连眼睛都看不出扫描过程的速度
追答
试一下就知道有多快。50x50是很小的image。
离开MFC可以用GLUT,openGL,用双buffer。背景画图,再交换buffer, 屏幕无闪动,啊,这是对很大的image而言。
50x50是很小的image, 怎会看出扫描过程,除非你的电脑速度太慢,没有图形卡?比50x50大的尺寸我也画过,也因为计算一个一个像素,想简单快速看结果。
建BITMAP对象,再显示BITMAP,也是一个途径,问题在是否值得。
深圳量子动力
2024-10-21 广告
双目摄像头可找深圳量子动力双目摄像系统可通过无线方式进行面部捕捉,可以满足在家、工作室、直播间、专业动捕棚等多种场景的不同使用人群。支持Metahuman Animator解算,支持升级animator高精度表情方案... 点击进入详情页
本回答由深圳量子动力提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式