`
isiqi
  • 浏览: 16367227 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

三个实现透明效果的方法(我还没有试过,不保证质量)

F# 
阅读更多
方法一:

void CChessBoard::FillMarkedChess(CDC *pDC,CRect rect, COLORREF color)
{
//color为半透明的底色
COLORREF bkcolor;
int R1,G1,B1,R2,G2,B2;
R1=color&255;
G1=(color>>8)&255;
B1=(color>>16)&255;
//标记块的左边与右边各多显示一点
for(int x=rect.left-1;x<=rect.right;x++)
{
for(int y=rect.top-1;y<=rect.bottom;y++)
{
//nRatio为透光率
bkcolor=pDC->GetPixel(x,y);
R2=bkcolor&255;
G2=(bkcolor>>8)&255;
B2=(bkcolor>>16)&255;
R2=R1+(R2-R1)*m_nRatio/100;
G2=G1+(G2-G1)*m_nRatio/100;
B2=B1+(B2-B1)*m_nRatio/100;
pDC->SetPixel(x,y,RGB(R2,G2,B2));
}
}
}

方法二:

/*
这是一个用来填充透明位图的函数
CDC *pDC 需要画位图的CDC指针
HBITMAP hBitmap 位图's m_hObject
CRect &rect 指定位图在pDC中的位置
COLORREF rgbMask 位图的透明色
*/
void FillTransparentHBitmap(CDC *pDC, HBITMAP hBitmap,CRect &rect, COLORREF rgbMask)
{
CDC ImageDC,MaskDC;
CBitmap Image,*pOldImage=NULL;
CBrush *oldBrush=NULL;
CBitmap maskBitmap,*pOldMaskDCBitmap ;

//Image.LoadBitmap(IDImage);
Image.Attach(hBitmap);

ImageDC.CreateCompatibleDC(pDC);
//CBrush br(&Image);
pOldImage=ImageDC.SelectObject(&Image);
//ImageDC.FillRect(rect,&br);
BITMAP bm;
Image.GetBitmap(&bm);

MaskDC.CreateCompatibleDC(pDC);
maskBitmap.CreateBitmap( rect.Width(), rect.Height(), 1, 1, NULL );
pOldMaskDCBitmap = MaskDC.SelectObject( &maskBitmap );

ImageDC.SetBkColor(rgbMask);
int ix=0,iy=0;
for(iy=0;iy<rect.Height();iy+=bm.bmHeight)
{
for(ix=0;ix<rect.Width();ix+=bm.bmWidth)
{
MaskDC.BitBlt( ix, iy, bm.bmWidth, bm.bmHeight, &ImageDC, 0, 0, SRCCOPY );
}
}

ImageDC.SetBkColor(RGB(0,0,0));
ImageDC.SetTextColor(RGB(255,255,255));
ImageDC.BitBlt(0, 0, rect.Width(), rect.Height(), &MaskDC, 0, 0, SRCAND);

pDC->BitBlt(rect.left,rect.top,rect.Width(), rect.Height(), &MaskDC, 0, 0, SRCAND);
for(iy=rect.top;iy<rect.Height();iy+=bm.bmHeight)
{
for(ix=rect.left;ix<rect.Width();ix+=bm.bmWidth)
{
//MaskDC.BitBlt( ix, iy, bm.bmWidth, bm.bmHeight, &ImageDC, 0, 0, SRCCOPY );
pDC->BitBlt(ix,iy,bm.bmWidth, bm.bmHeight, &ImageDC, 0, 0,SRCPAINT);
}
}
//pDC->BitBlt(rect.left,rect.top,rect.Width(), rect.Height(), &ImageDC, 0, 0,SRCPAINT);

MaskDC.SelectObject(pOldMaskDCBitmap);
ImageDC.SelectObject(pOldImage);
//ImageDC.SelectObject(oldBrush);

Image.Detach();
}


方法三:

BOOL BitBlt_HT(
HDC hdc,//目標DC
RECT rect,//目標區域
COLORREF maskColor,//半透明前景
UINT maskRatio//半透明前景比重 ( 0 - 100 )
)
{
int x,y;
COLORREF bColor;
BYTE b_R,b_G,b_B,f_R,f_G,f_B;

maskRatio = maskRatio % 100;
f_R = GetRvalues(maskColor);f_G = GetGvalues(maskColor);f_B = GetBvalues(maskColor);

HDC hMemDC = ::CreateCompatibleDC(hdc);
if (hMemDC == NULL) return 0;
HBITMAP hOldBmp,hNewBmp = ::CreateCompatibleBitmap(hdc,rect.right - rect.left ,rect.bottom - rect.top );
if (hNewBmp == NULL)
{
::DeleteDC (hMemDC);
return 0;
}
hOldBmp = (HBITMAP)::SelectObject(hMemDC,hNewBmp);
::BitBlt (hMemDC,0,0 ,rect.right-rect.left ,rect.bottom - rect.top ,hdc,rect.left ,rect.top,SRCCOPY);

for (y = 0 ; y <rect.bottom - rect.top ; y ++)
{
for (x = 0 ; x <= rect.right - rect.top; x++)
{
bColor = GetPixel(hMemDC,x,y);
b_R = GetRvalues(bColor);b_G = GetGvalues(bColor);b_B = GetBvalues(bColor);
bColor = RGB(f_R*maskRatio/100+b_R*(100-maskRatio)/100,f_G*maskRatio/100+b_G*(100-maskRatio)/100,f_B*maskRatio/100+b_B*(100-maskRatio)/100);
SetPixel(hMemDC,x,y,bColor);
}
}
::BitBlt (hdc,rect.left ,rect.top ,rect.right-rect.left ,rect.bottom - rect.top ,hMemDC,0,0,SRCCOPY);
::SelectObject(hMemDC,hOldBmp);
::DeleteObject (hNewBmp);
::DeleteDC (hMemDC);
return 1;
}
分享到:
评论

相关推荐

    临床教育管理专业化技术临床教学基地质量保证体系.ppt

    马丁·特罗的高等教育发展模式理论指出,高等教育经历精英、大众和普及三个阶段。在大众化阶段,行政权力在管理中的地位增强;而普及阶段,管理专家成为主导。中国高等教育学会会长周远清强调教学管理兼具学术和行政...

    软件产品功能及非功能出厂测试及典型问题缺陷培训.ppt

    【出厂测试典型问题分析及解决方案】部分列举了三大常见问题:功能部分缺失或完全缺失,功能实现与需求不符,以及界面展示问题。为解决这些问题,提出了改进内部测试流程、规范需求文档、强化用户体验等策略。这强调...

    禅道测试管理工具

    禅道测试管理工具是一款专为中国软件开发团队设计的开源项目管理软件,它涵盖了软件开发过程中的测试管理、缺陷跟踪、需求管理、文档管理等多个方面,旨在提升团队协作效率和产品质量。这款工具以其易用性、灵活性和...

    Android-AndroidMD风格控件经典使用仿饿了么透明状态栏兼容低版本

    但在低版本系统中,需要使用第三方库如`android-translucent-status`或自定义解决方案,通过修改StatusBar高度和颜色实现透明效果。 3. **兼容低版本系统**: 为了保证低版本Android系统的兼容性,可以使用`...

    安卓手绘图片处理画板相关-Android压缩图片到100K以下并保持不失真的高效方法.rar

    本资源提供的"Android压缩图片到100K以下并保持不失真的高效方法"探讨了如何在保证图片质量的同时,有效地减小图片的文件大小。以下将详细解析这个主题中的关键知识点: 1. **图片压缩算法**:常见的图片压缩算法有...

    Unity3D可用性评估报告.docx

    评估指出物体表面无半透明效果,可能是透明材质设置不当或缺乏透明度贴图。 6. 阴影效果:Unity支持多种阴影技术,如软阴影、接触硬化阴影等。报告中未涉及阴影效果,表明可能未启用或调整合适的阴影设置。 7. ...

    软件工程中的软件测试计划与执行.pptx

    1. **黑盒测试:** 关注于软件的功能性行为,不考虑内部实现细节。 2. **白盒测试:** 侧重于软件的内部逻辑结构,通常用于单元测试。 3. **自动化测试:** 利用工具自动执行测试用例,提高效率和准确性。 4. **性能...

    java源码包---java 源码 大量 实例

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    java源码包2

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    语音消息功能实现,录音/播放录音

    3. **录音质量设置**:为了保证录音效果,需要设置合适的音频编码格式(如AAC、AMR等)和采样率。更高的采样率意味着更好的音质,但也会占用更多的存储空间。 4. **实时音量检测**:为了实现话筒图片根据声音大小...

    java源码包3

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    java源码包4

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    JAVA上百实例源码以及开源项目源代码

    QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    QualityCenter10 Overview

    5. **项目进展不透明**:项目进度和状态的可见性不足,导致最后时刻的赶工、错过截止日期和质量不佳的结果。 6. **手动测试限制**:手动测试方法无法满足现代多层、多平台、业务服务导向型应用的需求与复杂性,从而...

    地面数字电视单频网适配器技术要求和测量方法.

    这是一个实现从网络接口或网络适配器接口到各网络适配器节目源入口透明传送的网络,主要用于传输TS流信号,确保信号的连续性和完整性。 #### 3. 网络适配器(Network Adapter) 网络适配器是地面数字电视广播系统...

    软件测试培训讲义

    - SQA(软件质量保证)人员:确保遵循质量标准和流程。 #### 六、实例讲解测试活动在软件工程中的应用 - **案例分析**:通过具体项目案例展示测试活动如何贯穿整个软件开发周期。 - **关键点**:重点介绍测试在...

Global site tag (gtag.js) - Google Analytics