CDC类的位图拷贝

zj 2000-01-18 05:15:00
请问高手:我想在本地机上从CDC中拷贝位图下来,通过网络
传到另一台机子上,通过CDC显示出来,该怎样实现。
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
solomon 2000-01-20
  • 打赏
  • 举报
回复
你是不是想编一个看别人机器上图案的程序?
PC1----
1. 创建一个MemoryBitmap大小和CDC中要取得的大小一样(如800*600)
具体可以看一看MSDN的CreateCompatibleBitmap
不知道MFC有没有把它封装到 CCompatibleBitmap中去
2. 创建一个MemoryDC, 把刚才创建的MemoryBitmap选入(SelectObject)
3. 用Bitblt (参考Fun倒数第3句)
4. 分配内存, 大小必须能容纳位图每个像素的
5. 用GetDIBits取得位图的每个像素
6. 压缩并发送该内存(同时发送图像尺寸和(调色板/颜色数))
7. Release Memory
-------
PC2----
1.接受数据
2.用 PC1 的 (1)(2)
3.用 SetDIBits
4.mem.BitBlt(0,0,800,600,&dc,0,0,SRCCOPY);(与PC1的3相反)
明白了没有?如果明白了,给我打分吧。;-)
PS:用GetObject(hBitmap,...)可以得到HBITMAPINFO结构。
zj 2000-01-19
  • 打赏
  • 举报
回复
请问solomon:
Fun的 bitmap.LoadBitmap(IDB_BITMAP1) 语句好象有问题,
用GetDIBits怎样将bmp存入CBitmap中。
solomon 2000-01-19
  • 打赏
  • 举报
回复
1。 在PC1 用 Fun 的方法创建 Bitmap, 调用, GetDIBits 取得位图信息
2。 数据压缩
3。 传送(PC1 -> PC2)
4。 数据解缩
5。 在 PC2 中创建 大小, 颜色数一样的 Bitmap 用 SetDIBits
6。 用 BitBlt显示

5,6 可以用 SetDIBitsToDevice实现

zj 2000-01-19
  • 打赏
  • 举报
回复
我不知道怎样将CDC存储成可传送的bmp
tonyhan 2000-01-19
  • 打赏
  • 举报
回复
流程如下:

cdc存储bmp-〉数据压缩-〉建立socket连接-〉数据传送-〉关闭socket-〉数据解压
-〉显示bmp
昆仑上 2000-01-18
  • 打赏
  • 举报
回复
CDC dc; // device context for painting
CDC mem;
mem.CreateCompatibleDC(&dc);
CBitmap bitmap;
CBitmap * old;
bitmap.LoadBitmap(IDB_BITMAP1);
old=mem.SelectObject(&bitmap);

dc.BitBlt(0,0,800,600,&mem,0,0,SRCCOPY);
mem.SelectObject(old);
mem.DeleteDC();
zdg 2000-01-18
  • 打赏
  • 举报
回复
存储成BMP图形再传送就行了...

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧