类似windows画图板程序
hdc = GetDC(hwnd);
// 创建内存设备描述表 
hdc1=CreateCompatibleDC(hdc);
// 创建位图
hBitMap1 = CreateCompatibleBitmap(hdc,10800,160);
我想在位图hBitMap1 上绘图,怎么做
给个思路
和代码 分不够还可以再加分
只要能解决问题
谢谢

解决方案 »

  1.   

    楼主想使用的是双缓冲技术吧?
    现在内存中绘制图,然后使用BitBlt之类的函数绘制在窗口中?
      

  2.   

    1. HGDIOBJ pOld = SelectObject(hdc1,hBitMap1);
    2. 然后在hdc1上绘图就行了
      

  3.   

    类似windows绘图工具程序
    windows画图板  他是在位图上绘的吧  然后拷贝在客户区的  是不是
    我的程序 和windows画图板很相似  
    就是实现这个功能
    怎么做
      

  4.   

    操作内存DC就行了,DC绘制的就是位图。
      

  5.   

     有这等好事!接分。画图形直接在DC上画,处理位图才在BitMap上。看你想做什么。
      

  6.   

    直接在图上画,获取DC后就用
    pDC->MoveTo(point);
    pDC->LineTo(point1);
    之类的
      

  7.   

    双缓冲技术
    参考这篇文章http://dev.yesky.com/44/2316544.shtml
      

  8.   

    先设置好GDI对象,就可以用CDC类函数进行绘图了
      

  9.   

    直接用CDC来画图,得到CDC的对象,然后调用函数就OK了
    setpixel:点
    moveto(point),lineto(point)直线
    Rectangle:矩形
    ellipse:椭圆
      

  10.   

    直接用CDC来画图,得到CDC的对象,然后调用函数就OK了
    setpixel:点
    moveto(point),lineto(point)直线
    Rectangle:矩形
    ellipse:椭圆
      

  11.   

    直接用CDC来画图,得到CDC的对象,然后调用函数就OK了
    setpixel:点
    moveto(point),lineto(point)直线
    Rectangle:矩形
    ellipse:椭圆
      

  12.   

    http://download.csdn.net/source/1381542
      

  13.   

    case   WM_CREATE:
            
                              hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
                                     hBitmap = LoadBitmap (hInstance, TEXT ("Bricks")) ;
                                      GetObject (hBitmap, sizeof (BITMAP), &bitmap) ;
                                      cxSource = bitmap.bmWidth ;
            
                              cySource = bitmap.bmHeight ;
                                      return 0 ;
                       case   WM_SIZE:
            
                              cxClient = LOWORD (lParam) ;
            
                              cyClient = HIWORD (lParam) ;
            
                              return 0 ;
                       case   WM_PAINT:
            
                              hdc = BeginPaint (hwnd, &ps) ;
                                      hdcMem = CreateCompatibleDC (hdc) ;
            
                              SelectObject (hdcMem, hBitmap) ;
                                     for (y = 0 ; y < cyClient ; y += cySource)
            
                              for (x = 0 ; x < cxClient ; x += cxSource)
            
                              {
            
                              BitBlt (hdc, x, y, cxSource, cySource, hdcMem, 0, 0, SRCCOPY) ;
            
             }
                                      DeleteDC (hdcMem) ;
            
                              EndPaint (hwnd, &ps) ;
            
                              return 0 ;大概思路 就是这样  
    自己多动脑子思考 
    别忘了 给我给分呀
      

  14.   

    申请一个内存DC与CBitmap,把CBitamp与内存DC关联,然后在内存DC画图,也就是在位图上画图
    CDC memDC;
            CDC *pDC;
    CBitmap bitmap;
    pDC = ::GetDC();
    memDC.CreateCompatibleDC(pDC);
    bitmap.CreateCompatibleBitmap(pDC, VIDEOWIDTH, VIDEOHEIGHT);
    memDC.SelectObject(&bitmap);
    CPen pen;
    pen.CreatePen(NULL , 1 , RGB(0,255,255));
    memDC.SelectObject(&pen);
    memDC.MoveTo(10 , 10);
    memDC.LineTo(100,100);
    pDC->BitBlt(0, 0, VIDEOWIDTH ,VIDEOHEIGHT , &memDC, 0 ,0 ,SRCCOPY);
    pen.DeleteObject();