BREW中几种常用的效果(淡淡浅出、半透明)

设置背景透明的窗体,GDI+绘制异形WINFORM 在.Net环境下绘制矩形,椭圆形,三角形等形态的窗体是件很简单的事情,只要设置窗体的背景透明当你在窗体上绘制图形和控件时,是不会显示窗体的,这点MS的GDI+确实相比其他平台的实现方式更加方便和简单。设置方式也很简单,首先设置FORM的BackColor为一个程序中不常用的颜色,然后再设置FORM的TransparenceKey为这个颜色就OK了。参考VB.net代码Private Sub For 阅读详情

主要是给自己一个备份哈,谁需要谁拿去。代码如下:

/*****************************************************    
  Function:FadeIn    
  Desc:从0增加R,G,B颜色值,实现淡入效果    
 Input:pDst-目标位图,16位色,xdst,ydst-目标位图位置,pSrc-源位图,16位色,width,height-源位图大小,必须确保ydst+height<pDst>Height,xdst+width<pDst->Width,    
   step-步长    
  Output:pDst-经过处理的位图    
  Return:    
*****************************************************/    
void FadeIn(IBitmap *pDst,int xdst,int ydst,IBitmap *pSrc,int width,int height,int step)     
{     
  int x,y;     
  int offset1,offset2;     
  int offdst;     
  int offsrc;     
  uint16 dstcolor,srccolor;     
  uint8 r,g,b;     
    
  IDIB *dstdib = (IDIB*)pDst;     
  IDIB *srcdib = (IDIB*)pSrc;     
       
  // 获得实际的图片点阵数据     
  uint16 *pDstBmp = (uint16*)dstdib->pBmp;      
  uint16 *pSrcBmp=(uint16 *)srcdib->pBmp;     
    
  if(dstdib->nDepth!=16 || srcdib->nDepth!=16)     
    return;     
    // 一般手机屏幕都是16位,565格式     
    if(dstdib->nColorScheme == IDIB_COLORSCHEME_565)     
    {     
    offset1=((ydst*dstdib->nPitch)>>1)+xdst;     
    offset2=0;     
    for(y=0;y<height;y++)     
    {     
      offdst=offset1;     
      offsrc=offset2;     
      for(x=0;x<width;x++)     
      {     
        dstcolor=pDstBmp[offdst];     
        srccolor=pSrcBmp[offsrc];     
        if(srccolor!=63519)     
        {     
          r=srccolor>>11;     
          g=(srccolor>>5) & 0x3f;     
          b=srccolor & 0x1f;     
          if(step<r)     
            r=step;     
          if(step<g)     
            g=step;     
          if(step<b)     
            b=step;     
          pDstBmp[offdst]=r<<11 | g<<5 | b;     
        }     
        offsrc++;     
        offdst++;     
      }     
      offset1+=(dstdib->nPitch>>1);     
      offset2+=(srcdib->nPitch>>1);     
    }     
  }     
}     
    
/*****************************************************    
  Function:Alpha256Bmp    
  Desc:256色位图alpha混合,修改调色板,只适用256色位图,加快速度用。    
 Input:pDst-目标位图,xdst,ydst-位置,width,height-半透明处理位图大小,pSrc-256色位图,xscr,yscr-源位置,R,G,B半透明颜色值,alpha    
  Output:    
  Return:    
******************************************************/    
void Alpha256Bmp(IBitmap *pDst,int xdst,int ydst,int width,int height,IBitmap *pSrc,     
                 int xsrc,int ysrc,uint8 r, uint8 g, uint8 b,float alpha)     
{     
  uint8 dstcolor;     
  uint32 *pPalette;     
  uint32 *pBackup;     
  byte   *pOrigBytes;     
  byte   *pNowBytes;     
  int    i;     
    
  IDIB *srcdib = (IDIB*)pSrc;     
  if(srcdib->nColorScheme>0)     
    return;     
  if(srcdib->cntRGB==0)     
    return;     
  pPalette=(uint32*)MALLOC(sizeof(uint32)*255);     
  pNowBytes=(byte*)pPalette;     
  pOrigBytes=(byte *)srcdib->pRGB;     
  pBackup=srcdib->pRGB;     
  for(i=0;i<srcdib->cntRGB;i++)     
  {     
    dstcolor=(*pOrigBytes++);     
    dstcolor=(uint8)(dstcolor+(alpha*(r-dstcolor)));     
    *pNowBytes++=dstcolor;     
    dstcolor=(*pOrigBytes++);     
    dstcolor=(uint8)(dstcolor+(alpha*(g-dstcolor)));     
    *pNowBytes++=dstcolor;     
    dstcolor=(*pOrigBytes++);     
    dstcolor=(uint8)(dstcolor+(alpha*(b-dstcolor)));     
    *pNowBytes++=dstcolor;     
    pNowBytes++;     
    pOrigBytes++;     
  }     
  srcdib->pRGB=pPalette;     
  IBITMAP_BltIn(pDst,xdst,ydst,width,height,pSrc,xsrc,ysrc,AEE_RO_COPY);     
  srcdib->pRGB=pBackup;     
  FREE(pPalette);     
}     
    
/*****************************************************    
  Function:SpecialAlpha256Bmp    
  Desc:256色位图alpha混合,修改调色板,只适用256色位图,加快速度用。    
 Input:pDst-目标位图,xdst,ydst-位置,width,height-半透明处理位图大小,    
        pSrc-256色位图,xscr,yscr-源位置,R,G,B半透明颜色值,alpha    
  Output:    
  Return:    
******************************************************/    
void SpecialAlpha256Bmp(IBitmap *pDst,int xdst,int ydst,int width,int height,IBitmap *pSrc,     
                 int xsrc,int ysrc,uint8 r, uint8 g, uint8 b)     
{     
  uint8 dstcolor;     
  uint32 *pPalette;     
  uint32 *pBackup;     
  byte   *pOrigBytes;     
  byte   *pNowBytes;     
  int    i;     
    
  IDIB *srcdib = (IDIB*)pSrc;     
  if(srcdib->nColorScheme>0)     
    return;     
  if(srcdib->cntRGB==0)     
    return;     
  pPalette=(uint32*)MALLOC(sizeof(uint32)*255);     
  pNowBytes=(byte*)pPalette;     
  pOrigBytes=(byte *)srcdib->pRGB;     
  pBackup=srcdib->pRGB;     
  for(i=0;i<srcdib->cntRGB;i++)     
  {     
    dstcolor=(*pOrigBytes++);     
    dstcolor=(uint8)(dstcolor+((r-dstcolor)>>1));     
    *pNowBytes++=dstcolor;     
    dstcolor=(*pOrigBytes++);     
    dstcolor=(uint8)(g>>1);     
    *pNowBytes++=dstcolor;     
    dstcolor=(*pOrigBytes++);     
    dstcolor=(uint8)(b>>1);     
    *pNowBytes++=dstcolor;     
    pNowBytes++;     
    pOrigBytes++;     
  }     
  srcdib->pRGB=pPalette;     
  IBITMAP_BltIn(pDst,xdst,ydst,width,height,pSrc,xsrc,ysrc,AEE_RO_COPY);     
  srcdib->pRGB=pBackup;     
  FREE(pPalette);     
}     
    
/*****************************************************    
  Function:SpecialAlpha    
  Desc:实现和某种颜色的半透明    
 Input:pDst-目标位图,16位色,xdst,ydst-目标位图位置,width,height-半透明处理位图大小,必须确保ydst+height<pDst->Height,xdst+width<pDst->Width,R,G,B半透明颜色值    
 Output:pDst-经过处理的位图    
 Return:    
*****************************************************/    
void SpecialAlpha(IBitmap *pDst,int xdst,int ydst,int width,int height,     
                 uint8 r, uint8 g, uint8 b)     
{     
  int x,y;     
  int offset1;     
  int offdst;     
  uint16 dstcolor;     
  uint8 dstr,dstg,dstb;     
    
  IDIB *dstdib = (IDIB*)pDst;     
       
  uint16 *pDstBmp = (uint16*)dstdib->pBmp; // 获得实际的图片点阵数据。     
    
  if(dstdib->nDepth!=16)     
    return;     
  // 一般手机屏幕都是16位,565格式     
  r=r & 0x1f;     
  g=(g & 0x3f);     
  b=b & 0x1f;     
    if(dstdib->nColorScheme == IDIB_COLORSCHEME_565)     
    {     
    offset1=((ydst*dstdib->nPitch)>>1)+xdst;     
    for(y=0;y<height;y++)     
    {     
      if(y==height-1)     
        offdst=0;     
      offdst=offset1;     
      for(x=0;x<width;x++)     
      {     
        dstcolor=pDstBmp[offdst];     
        dstr=dstcolor>>11;     
        dstr=(uint8)(dstr+((r-dstr)>>1));     
        dstg=(dstcolor>>5) & 0x3f;     
        dstg=(uint8)(g>>1);     
        dstb=dstcolor & 0x1f;     
        dstb=(uint8)(b>>1);     
        pDstBmp[offdst]=dstr<<11 | dstg<<5 | dstb;     
        offdst++;     
      }     
      offset1+=(dstdib->nPitch>>1);     
    }     
  }     
}     
    
/*****************************************************    
  Function:FastAlpha    
  Desc:实现和某种颜色的半透明    
 Input:pDst-目标位图,16位色,xdst,ydst-目标位图位置,width,height-半透明处理位图大小,必须确保ydst+height<pDst->Height,xdst+width<pDst->Width,R,G,B半透明颜色值    
  Output:pDst-经过处理的位图    
  Return:    
*****************************************************/    
void FastAlpha(IBitmap *pDst,int xdst,int ydst,int width,int height,     
                 uint8 r, uint8 g, uint8 b)     
{     
  int x,y;     
  int offset1;     
  int offdst;     
  uint16 dstcolor;     
  uint8 dstr,dstg,dstb;     
    
  IDIB *dstdib = (IDIB*)pDst;     
  // 获得实际的图片点阵数据。     
  uint16 *pDstBmp = (uint16*)dstdib->pBmp;      
  if(dstdib->nDepth!=16)     
    return;     
 // 一般手机屏幕都是16位,565格式     
  r=r & 0x1f;     
  g=(g & 0x3f);     
  b=b & 0x1f;     
    if(dstdib->nColorScheme == IDIB_COLORSCHEME_565)     
    {     
    offset1=((ydst*dstdib->nPitch)>>1)+xdst;     
    for(y=0;y<height;y++)     
    {     
      if(y==height-1)     
        offdst=0;     
      offdst=offset1;     
      for(x=0;x<width;x++)     
      {     
        dstcolor=pDstBmp[offdst];     
        dstr=dstcolor>>11;     
        dstr=(uint8)(dstr+((r-dstr)>>1));     
        dstg=(dstcolor>>5) & 0x3f;     
        dstg=(uint8)(dstg+((g-dstg)>>1));     
        dstb=dstcolor & 0x1f;     
        dstb=(uint8)(dstb+((b-dstb)>>1));     
        pDstBmp[offdst]=dstr<<11 | dstg<<5 | dstb;     
        offdst++;     
      }     
      offset1+=(dstdib->nPitch>>1);     
    }     
  }     
}     
    
/*****************************************************    
  Function:AlphaBlend    
  Desc:实现和某种颜色的半透明    
 Input:pDst-目标位图,16位色,xdst,ydst-目标位图位置,width,height-半透明处理位图大小,必须确保ydst+height<pDst->Height,xdst+width<pDst->Width,R,G,B半透明颜色值,alpha-半透明因子    
  Output:pDst-经过处理的位图    
  Return:    
*****************************************************/    
void AlphaBlend(IBitmap *pDst,int xdst,int ydst,int width,int height,     
                 uint8 r, uint8 g, uint8 b,float alpha)     
{     
  int x,y;     
  int offset1;     
  int offdst;     
  uint16 dstcolor;     
  uint8 dstr,dstg,dstb;     
    
  IDIB *dstdib = (IDIB*)pDst;     
       
  uint16 *pDstBmp = (uint16*)dstdib->pBmp;      
  if(dstdib->nDepth!=16)     
    return;     
         
  r=r & 0x1f;     
  g=(g & 0x3f);     
  b=b & 0x1f;     
    if(dstdib->nColorScheme == IDIB_COLORSCHEME_565)     
    {     
    offset1=((ydst*dstdib->nPitch)>>1)+xdst;     
    for(y=0;y<height;y++)     
    {     
      if(y==height-1)     
        offdst=0;     
      offdst=offset1;     
      for(x=0;x<width;x++)     
      {     
        dstcolor=pDstBmp[offdst];     
        dstr=dstcolor>>11;     
        dstr=(uint8)(dstr+(alpha*(r-dstr)));     
        dstg=(dstcolor>>5) & 0x3f;     
        dstg=(uint8)(dstg+(alpha*(g-dstg)));     
        dstb=dstcolor & 0x1f;     
        dstb=(uint8)(dstb+(alpha*(b-dstb)));     
        pDstBmp[offdst]=dstr<<11 | dstg<<5 | dstb;     
        offdst++;     
      }     
      offset1+=(dstdib->nPitch>>1);     
    }     
  }     
}  
[修正]IOS中使用SoundTouch库实现变声 之前写过一片文章“IOS中使用SoundTouch库实现变声”。 最后有很多朋友在博客上说发出来的代码在模拟器上运行可以,不能在真机上运行,前段时间一直也很忙,没时间翻代码出来查看,望谅解。 今天抽空检查了一下问题的根源,并且在IPhone 4(ios5.0.1)上测试通过,下面更新一些代码。 同样是Apple官方的SpeakHere,要下载代码的,请查看上一篇文章。 void AQRec 阅读详情

相关推荐

LDR: LdrpWalkImportDescriptor()解决方案

今天编译一开源项目,他提供的是VC9的工程,我这边是VC10,首先,打开之后需要经过转换,一切正常,然后编译,出现一个简单的小的错误,更改之后编译通过,但是运行时出现下图所示的错误。 “应用程序正常初始化(oxc0150002)”失败,请单击“确定”,终止应用程

Yarin's Blog™ 6106

32位颜色 转换成16位颜色

向别人学习而来:分享。。 1.颜色值有32位存储和16位存储实现呼唤。 2.原理new Color(97,100,255);这个是32位存储 参数依次是 r、g、b。省略了a,alpha通道的值 rgba; 实现: int32 int32Color(unsigned int r,unsigned int g, unsigned int b) {   return (((r)&0...

weixin_30279751的博客 3218

在ios中使用soundtouch库实现变声

这篇文章是项目总结了。 做了段时间的项目,过程中也遇到了很多麻烦,但是好在终于都解决了,这里是这里是项目之后凭着记忆总结出来,大家有遇到同样的问题,希望能参考了,但是我记忆可能不太好了,要是实践中有什么问题可以直接给我留言,或者到weibo.com/yarin上找我了。

Yarin's Blog™ 4185

Mac安装brew(超级简单)

现在国内安装brew都会出现一些问题,连接不上 Warning: The Ruby Homebrew installer is now deprecated and has been rewritten in Bash. Please migrate to the following command: /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)” curl:

木欣欣以向荣 348

SAP 人力资源工资配置项3---工资项配置

工资项设置

xiouluoyang的专栏 1万+

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3455

MacOS使用brew无法安装Python_无法安装gdbm_无法安装autojump

GNU 程序国内下载源: https://mirrors.ustc.edu.cn/gnu/ brew 下载的软件安装包存放在下面的目录: liaowenxiongdeMacBook-Air:Homebrew liaowenxiong$ brew --cache /Users/liaowenxiong/Library/Caches/Homebrew 解决无法安装gbdm的问题 手动下载安装包 gdbm-1.9.tar.gz,下载地址:https://mirrors.ustc.edu.cn/gnu/gdbm

liaowenxiong的博客 3806

墨水屏高效开发:架构、开源库与实战优化指南

嵌入式显示技术中,电子墨水屏以其类纸观感和超低功耗特性,在电子书阅读器、智能办公本及工业仪表等场景中占据独特地位。其工作原理基于微胶囊电泳技术,仅在画面刷新时消耗电能,静态显示时功耗近乎为零,这带来了极致的续航优势。为实现流畅的交互体验,开发者需构建分层渲染架构,通过硬件抽象层统一驱动接口,并引入帧缓冲与差异比较算法智能决策局部刷新区域,从而大幅降低刷新延迟与功耗。开源库如GxEPD2和LVGL为墨水屏适配提供了关键支持,结合波形文件管理与电源优化策略,能有效解决残影与卡顿问题。本文聚焦于eink墨水屏高效

weixin_42545636的博客 411

常见RGB 颜值表和半透明颜色值的写法

这是我见过的颜色比较清新的颜值表了,果断收藏一下(转载)透明度对应的16进制0xffff00ff是int类型的数据,分组一下0x|ff|ff00ff,0x表示颜色整数的标记,ff表示透明度,f00f表示色值,注意:0x后面ffff00ff必须是8位的颜色表示。颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0到 255(00到 ff)。对于 alpha,00表示完...

病毒才俊 10万+

高德地图-获取定位-失败原因-浏览器定位异常场景

提示:也能实现,但是需要https协议,而且请求时间很长,要么你用梯子,还是不太合适.

shi15926lei的博客 4206

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8308

Audio File Convert(afconvert)工具转换音频格式

在做游戏音效的时候,通常会使用.wav格式的音频文件,但是Apple通常推荐我们使用.CAF格式的,同时也提供了afconvert工具可以方便我们对音频文件进行转换。 首先可以输入如下命令来查看支持哪些格式的音频。 afconvert -hf 或者 afconvert -

Yarin's Blog™ 3339

手把手教你用STM32的ADC读取PT100模块,实现高精度温度采集(附完整代码)

本文详细介绍了如何利用STM32的ADC模块读取PT100温度传感器信号,实现高精度温度采集系统。从硬件选型、ADC配置校准到温度计算算法和软件滤波技术,提供完整的实现方案和优化技巧,帮助工程师快速构建稳定可靠的温度监测系统。

weixin_29185199的博客 344

在cocos2d-x中编译/调试curl库

在cocos2d-x中编译/调试curl库 环境参数 系统:mac os x10.6 xocde:4.0.2 ios sdk:4.3 curl:curl-7.22.0 不知道curl是做什么的,就自己google了,这里暂时不纠结这个问题。 因一个cocos2d-x项目需要使用curl库,但是curl官方并没有直接支持ios,所以需要自己编译,另外,为了方便调试,所以

Yarin's Blog™ 3198

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2616

【StreamSet】ETL之StreamSet之Pipelines的状态监听之WebHook钉钉篇

介绍下StreamSets的状态监听以及钉钉的webhook的互联,这位博友问的恰是时候,不久前我刚刚对接过钉钉的机器人,这次看到这个问题,对我来说,应该轻车熟路了,那就有了这篇博文,状态监听之钉钉篇。...

m0_54252387的博客 487

《Android应用开发揭秘》连载1

《Android应用开发揭秘》   书名:Android应用开发揭秘作者:杨丰盛出版社:机械工业出版社ISBN:9787111291954出版日期:2010 年3月(1版2次)开本:16页码:515版次:1-2定价:69元豆瓣网讨论地址:http://www.douban.com/subject/4200822/China-pub预订地址:http://www.china-pu

Yarin's Blog™ 3041

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Xcode调试断点不停止解决方案!

很多人在使用xcode调试时,到断点处却不能停止,好像断点无效一样。 如果是黑苹果,那么可能是内核的原因,暂时没有解决方案。 如果非黑苹果,则按如下方式操作即可: 方案一:打开xcode的偏好设置,选择debugging选项,取消“load symbols la

Yarin's Blog™ 3036

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

《Android应用开发揭秘》连载2

《Android应用开发揭秘》   书名:Android应用开发揭秘作者:杨丰盛出版社:机械工业出版社ISBN:9787111291954出版日期:2010 年3月(1版2次)开本:16页码:515版次:1-2定价:69元豆瓣网讨论地址:http://www.douban.com/subject/4200822/China-pub预订地址:http://www.china-pub.

Yarin's Blog™ 2984
上一篇: Android教程之使用LiveAndroid来测试应用
下一篇: VC6编译卡死之解决办法
yarin
博客等级 码龄17年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值