三四个窗口分别要经常绘制500*500左右的图像,由于一些原因只能逐像素计算颜色。如果用WIndowsAPI的话画一次就要花不少时间。又觉得用DirectX什么的太大动干戈了。有没有什么逐像素绘图的快速方法。
目前是MFC结构最好不要变……
C++ 逐像素快速绘图
答案:2 悬赏:40 手机版
解决时间 2021-02-20 05:49
- 提问者网友:一抹荒凉废墟
- 2021-02-19 06:50
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-02-19 08:20
逐像素快速绘图就是画方块。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);
}
}
画得很快。
像素信息存放在
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);
}
}
画得很快。
全部回答
- 1楼网友:未来江山和你
- 2021-02-19 09:02
如果是可视范围,那看电脑屏幕的点数
~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯