日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

绘制“透明”位图

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 绘制“透明”位图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
繪制“透明”位圖是指繪制某一位圖中除指定顏色外的其余部分,我們稱這種顏色為“透明色”。通過將位圖的背景色指定為“透明色”,在繪制時,不繪制這部分背景,而僅繪制圖像,這樣就可以將位圖中圖像透明地繪制到窗口上。

  繪制“透明”位圖的關鍵是創建一個“掩碼”位圖(mask bitmap),“掩碼”位圖是一個單色位圖,它是位圖中圖像的一個單色剪影。

  在Windows編程中,繪圖都要用到設備描述表,我們需創建兩個內存設備描述表:位圖設備描述表(image DC)和“掩碼”位圖設備描述表(mask DC)。位圖設備描述表用來裝入位圖,而“掩碼”位圖設備描述表用來裝入“掩碼”位圖。在“掩碼”位圖設備描述表中制作“掩碼”位圖的方式是:先創建一個單色的Bitmap,裝入mask DC,然后,以“SRCCOPY”的方式將裝有位圖的位圖設備描述表繪制(BitBlt)到mask DC上。這樣,mask DC的顯示平面中的位圖即是“掩碼”位圖。

  繪制“透明”位圖的實際操作步驟:

  1.將位圖設備描述表以“SRCINVERT”的方式繪制(BitBlt)到顯示設備描述表上;

  2.將“掩碼”位圖設備描述表以“SRCAND”的方式繪制(BitBlt)到顯示設備描述表上;

  3.再將位圖設備描述表以“SRCINVERT”的方式繪制(BitBlt)到顯示設備描述表上。這樣除“透明色”外的其余位圖部分(圖像部分)就被繪制到窗口上了。

  實現代碼如下:

  void DrawTransparent(CDC * pDC, int x, int y, COLORREF crColour)

  { COLORREF crOldBack=pDC-〉SetBkColor(RGB(255,255,255));

   COLORREF crOldText=pDC-〉SetTextColor(RGB(0,0,0));

   CDC dcImage, dcMask;

   CBitmap bmp;

   bmp.LoadBitmap(IDB—TRANS);

  //IDB—TRANS是待顯示位圖的資源ID

   BITMAP bm;bmp.GetBitmap(&bm);

   int nWidth=bm.bmWidth,nHeight=bm.bmHeight;

  //為圖像及mask各創建一個DC

   dcImage.CreateCompatibleDC(pDC);

   dcMask.CreateCompatibleDC(pDC);

  //把圖像裝入image DC

   CBitmap* pOldBitmapImage=dcImage.SelectObject(&bmp);

  //為“掩碼”位圖創建一個單色bitmap

   CBitmap bitmapMask;

   bitmapMask.CreateBitmap(nWidth, nHeight, 1, 1, NULL); //把mask位圖裝入mask DC

   CBitmap* pOldBitmapMask = dcMask.SelectObject(&bitmapMask); //用透明色創建“掩碼”位圖

  dcImage.SetBkColor(crColour);//crColor是位圖中的透明色

   dcMask.BitBlt(0, 0, nWidth, nHeight, &dcImage, 0, 0, SRCCOPY);//分3步進行實際的繪制

   pDC-〉BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT);

   pDC-〉BitBlt(x, y, nWidth, nHeight, &dcMask, 0, 0, SRCAND);

   pDC-〉BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT); //恢復原先設置

   dcImage.SelectObject(pOldBitmapImage);

   dcMask.SelectObject(pOldBitmapMask);

   pDC-〉SetBkColor(crOldBack);

   pDC-〉SetTextColor(crOldText);}

  以上這種“透明”位圖的繪制方法,還可以用到動畫技術中,如繪制在某場景中不斷移動的人物或動物,就可以通過將人物或動物位圖“透明”地繪制到背景中實現。

總結

以上是生活随笔為你收集整理的绘制“透明”位图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲天堂av中文字幕 | 久久午夜神器 | 在线视频污 | 三级影片在线播放 | 色婷婷婷 | 波多野结衣免费观看视频 | 91精品国产高清一区二区三密臀 | 天海翼一二三区 | 欧美三极片 | 亚洲成人高清在线观看 | ,国产精品国产三级国产 | 玖玖久久 | 伊人资源网 | a视频在线观看免费 | 91精品综合久久久久久五月天 | 日韩av在线一区二区三区 | 中文字幕免费观看 | 男女免费网站 | 午夜性视频 | 不卡中文字幕在线观看 | 日韩最新视频 | 亚洲精品国产视频 | 日本乱大交xxxx公交车 | 国产一国产精品一级毛片 | 亚洲大乳 | 99爱精品视频 | 韩国av免费在线 | 伊人久久久久久久久久 | 夜夜小视频 | 亚洲成人av网址 | 精品国产亚洲av麻豆 | 久久在线观看 | 国产大片在线观看 | 日本三级全黄 | 国产日韩欧美视频 | 国产成人无码精品久久 | 蜜臀尤物一区二区三区直播 | 午夜怡红院 | 欧美成人精品一区二区三区在线观看 | 国产精品亚洲欧美在线播放 | 三级理伦| 日日骚av| 黑料视频在线观看 | 精品视频一区二区在线 | 51精品国产人成在线观看 | 国产一卡二卡在线播放 | 鲁片一区二区三区 | 国产精品高潮av | 国产综合久久久久久鬼色 | 高潮一区二区三区乱码 | 妻色成人网| 精品国产九九九 | 欧美性天天影院 | 久久精品一区二区三区黑人印度 | 麻豆md0077饥渴少妇 | 高清av网站| 一级片一级 | 亚洲天堂av免费在线观看 | 国产精品一区二区久久久 | 韩国av电影网站 | 伊人五月天 | 国产精品18久久久久久久久 | 俄罗斯毛片| 激情视频网站在线观看 | 性网| 亚洲区小说区 | 日本激情一区二区三区 | 在线免费日韩 | 99热综合 | 高潮av| 国产成人精品久久二区二区 | 午夜av一区二区三区 | 麻豆三级视频 | 一区二区国产精品精华液 | 91看毛片 | 又黄又爽在线观看 | 99re最新| 日韩欧美中文在线观看 | 高潮网| 精品美女一区二区三区 | 成人黄色短视频在线观看 | 午夜aaa片一区二区专区 | 亚洲第一页中文字幕 | 少妇毛片视频 | 人妻精品一区一区三区蜜桃91 | 国产福利免费看 | 大肉大捧一进一出好爽 | 老熟妇仑乱一区二区av | 综合网视频 | 黄网站免费大全入口 | 久在操| 欧美精品卡一卡二 | 日本污网站| 欧美一级生活片 | 午夜看黄神器 | 狠狠久久婷婷 | 亚洲欧美激情在线观看 | 亚欧成人精品 | 久久精品视频观看 |