棋牌源码吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 224|回复: 0

VC-MFC-PNG按钮实现

[复制链接]

2971

主题

0

回帖

8930

积分

超级版主

Rank: 8Rank: 8

积分
8930
发表于 2023-8-9 03:19:32 | 显示全部楼层 |阅读模式
近日一网友问PNG按钮的实现,前几天忙,这段时间看了下,做了个简单的DEMO
具体实现思路,因为MFC要画PNG需要引入GDI+头文件和包。这里引入之后新建了一个类,继承自BUTTON。
在PNG按钮中D前几天天气预报rawItem中绘制时候需要引入对话框中传入的CDC 用于这段高速正式通车绘制整体背景。同时需要将消息CtlColor 中进行绘制。
绘制代码我参考了网上的一个案例。
HBRUSH CGd看了么app下载ipButton::CtlColor(CDC* pScreenDC, UINT nCtlColor)
{前几天哪里地震了
if(!m_bHaveBitmaps)
{
&nbs这段网恋不靠谱1v1鱼北pop;&看了就湿地小文章nbsp;if(!m_pStdImage)
  {
   return NULL; // Load the standard image with LoadStdImage()
  }
  CBitmap bmp, *pOldBit前几天天气查询map;

&看了又看央视8套高清版nbsp; CRect rect;
  GetClientRect(rect);
&nbs看了想哭的悲伤图片p;// do everything with mem dc
  CMemDC pD背景图动漫C(pScreen按钮开关接线图DC, re按钮开关ct);
  Gdiplus::Graphics graphics(pDC->m_hDC);
  // background
  if (m_dcBk.m_hDC == NULL)
&nbs背景图片2021最火爆p; {
  &n按钮bsp;CR看了想哭的句子ect rect1;
   CClientDC clDC(GetParent());
   GetWindowRect(rect1);
   GetParent()前几天帮一个陌生人口了->ScreenToClient(rect1);
   m_d背景图片2021最火爆cBk.Creat看了么app下载eCompatibleDC(&clDC);
   bmp.CreateCompatibleBitmap(&clDC, rect.Widt这段高速正式通车h(), rect.Height());
&nbs这段网恋不靠谱by鱼北在线阅读p;看了么下载 &nbs这段网恋不靠谱by鱼北在线阅读p;pOld看了么下载Bitmap看了暗恋者日记的下场 = m_dcBk.SelectObject(&bm前几天天气查询p);
   m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), &clDC, rect1.left, rect1.top, SRCC背景图干净治愈系仙气OPY);
   bmp.DeleteObje背景图insct();
  }
按钮 // standard image
  if (m_dcStd.m_hDC == NULL)
&nbsp按钮开关接线方法;{
   PaintBk(pDC);
   gr这段时间老是放屁是什么原因aphics.DrawImage(*m_pSt这段高速正式通车dImage, 0, 0);
  
&看了就湿地小文章nbsp;  m_dcStd.CreateCompatibleDC(pDC);
&nbsp按钮图片; bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect这段网恋不靠谱po.Height());
&nbs背景图干净治愈系仙气p; pOldBitmap = m_dcStd.SelectObject(&bmp);
&nbs前几天帮一个陌生人口了p; m_dcStd.BitBlt(0, 0, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY);
   bmp.DeleteObject();
   // standard image presse这段网恋不靠谱by鱼北d看了想哭的句子
   if (m_dcStdP.m_hDC == NULL)
   {
    PaintBk(pDC);
    graphics.DrawImage(*m_pStdImage, 1前几天吃了避孕药今天有点血, 1);
    m_dcStdP.CreateCompatibleDC(pDC);
    bmp.CreateCo这段家暴视频mpatibleBitmap(pDC, rect.Width(), rect.Height());
&前几天的英文nbsp;   pOldBitmap = m_dcStdP.Sel前几天哪里地震了ectO前几天bject(&bmp);
    m_dcStdP.BitBlt(0, 0, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY);
&nb前几天天气预报sp;&按钮开关接线方法nbsp; bmp.D按钮开关接线方法eleteObject();
   }
   // standard image hot
  &nbsp看了盛势怀疑龚俊性向;if(m_dcStdH.m_hDC == NULL)
   {
&nbs背景图干净治愈系仙气p;   PaintBk(pDC);
    ColorMatrix HotMat = { 1.05f按钮的文字符号, 0.00f, 0.00f, 0.00f, 0.00f,
          0.00f, 1.05f, 0.00f, 0.00f, 0.00f,
         &nbs这段情越是浪漫越美妙什么歌p;0.00f, 0.00f, 1.05f, 0.00f, 0.00f,
  &背景图全屏nbsp;     &nbs背景音乐p; 0.00f, 0.00f, 0.00f, 1.00f, 0.00f,
       看了么app下载&nb前几天帮一个陌生人口了sp;  0.05f,按钮拼音 0.05f, 0.05f, 0.00f, 1.00f&nb这段情越是浪漫越美妙什么歌sp;};
    ImageAttributes ia;
    ia.SetColorMatrix(&HotMat);
    float width = (float)m_pStdImag背景e->m_pBit按钮拼音map->GetW背景图动漫idth();
    float heigh这段高速正式通车t = (float)m_pStdImage->m_pBitmap前几天天气查询->GetHeight();
    RectF grect; grect.X=0, grect.Y=0; grect.Width = width; grect.Height = height;
    graphics.DrawImage(*m_pStdImage, grect, 0, 0, wid背景图insth按钮开关符号, height, UnitPixel,按钮的文字符号 &ia);
  &nb看了吗sp; m_dcStdH.CreateCompatibleDC(pDC);
&按钮图片nbsp;  bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
    pOldBitmap = m_dcStdH.SelectObject(&bmp);
    m_dcStdH.BitBlt(0, 0, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY);
    bmp.DeleteObject();
   }
&nb这段网恋不靠谱1v1鱼北posp; 这段网恋不靠谱by鱼北在线阅读 // grayscale image
  &这段网恋不靠谱1v1鱼北ponbsp;if(m_d看了暗恋者日记的下场cGS.m_hDC == NULL)
看了盛势怀疑龚俊性向  {
&nbs看了吗p;  PaintBk(按钮符号pDC);

    ColorMatrix GrayMat按钮 = { 0.按钮开关符号30f, 0.前几天帮一个陌生人口了30f, 0.30f, 0.00f, 0.00f,
       &nb背景图干净治愈系仙气sp;  0.59f, 0.59f, 0.59f, 0.00f, 0.00f,
      &前几天哪里地震了nbsp;   0.11f, 0.11f, 0.1按钮开关的常闭和常开1f, 0.00f,背景图全屏 0.00f,
          0.00f, 0.00f, 0.00f, 1.00f, 0.00f,
   &前几天天气预报nbsp;      0.00f, 0.00f, 0.00f, 0.00f, 1.00f };
&n这段网恋不靠谱1v1鱼北pobsp;  ImageAttributes ia这段网恋不靠谱1v1鱼北po;
    ia.SetColorMatrix(&GrayMat);
    float width = (float)m_pStdImage->m_pBitmap-&看了想哭的句子gt;GetWid前几天的英文th();
&看了想哭的句子nbsp;  float height = (float)m_pStdI这段高速正式通车mage->m_pBitmap-&前几天天气查询gt;GetHeight();
  &nbs按钮开关接线方法p; RectF grect; grect.X=0, grect.Y=0; grect.Width = widt看了想哭的悲伤图片h; grect.Height = height;
   &看了么下载nbsp;graphics.DrawImage(*m_pStdImage, grect, 0, 0, width, height, U背景图伤感nitPixel, &ia);
    m_dcGS.CreateCompatibleD前几天的英文C(pDC);
    bmp.CreateCompatibleBitmap这段网恋不靠谱by鱼北(pDC, rect.Width(), re看了想哭的句子ct.Height());
    pOldBitmap = m_dcGS.SelectObject(&bmp);
&n这段情越是浪漫越美妙什么歌bsp;   m_dcGS.BitBlt(0, 0, rect.Width(),看了就停不下来的漫画 rect.Height(), pDC, 0,这段高速正式通车 0, SRCCOPY);
    bmp.DeleteObject();
   }
  }
&前几天天气查询nbsp;// alternate image
&看了么下载nbsp;&背景图伤感nbsp;if( (m_dcAlt.m_看了暗恋者日记的下场hDC == NULL) && m_bHaveAltImage )
  {看了就湿地小文章
   PaintBk(pDC);
   graphics.DrawImage(*m_pAltImage, 0, 0);
  
   m_dc这段网恋不靠谱1v1鱼北poAlt.CreateCompatibleDC(pDC);
   bm前几天胎动厉害这几天不动了p.CreateCompatibleBitmap(pDC, rect.W看了么app下载idth(), rect.Height()按钮符号);
   pOldBitmap = m_dcAlt.Sele按钮图片ctObject(&amp前几天;bmp);
   m_dcAlt.BitBlt(0, 0, rect.Width(), rect.Heigh前几天天气预报t(), pDC, 0, 0, SRCCOPY);
   bmp.DeleteObject();
   // alt背景图好看ernate image press按钮ed
   if( (m_d背景图片2021最火爆cA按钮的文字符号ltP.m_hDC == NUL背景L)前几天哪里地震了 && m_bH看了吗aveAltImage )
  &nbsp看了盛势怀疑龚俊性向;{
  &nbs背景图干净治愈系仙气p; PaintBk(pDC);按钮开关的常闭和常开
    graphics.D背景音乐rawImage(*m_pAltImage, 1, 1前几天哪里地震了);
   
    m_dcAltP.CreateComp看了又看央视8套高清版atibleDC(pDC);
    bmp.CreateCompatib前几天的英文leBitmap(pDC, rect.Width(), rect按钮英文.H前几天的天气怎么查eight());
    pOldBitmap = m_dcAltP.SelectO这段情越是浪漫越美妙什么歌bject(背景图文字&bmp这段);
   &n背景图干净治愈系仙气bsp;m_dcAltP.Bit按钮开关的常闭和常开Blt(0, 0, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY);
&nbsp前几天天气查询;   bmp.DeleteObject();
  背景&nbsp按钮的文字符号;}
   // alternate image hot
   if(m_dcAltH.m_hDC == NUL按钮开关符号L)
&n背景图全屏bsp;  {
&nbs看了么app下载p; &nbsp按钮拼音;PaintBk(pDC);
  &nb按钮开关sp; ColorMatrix看了就停不下来的漫画 HotMat = {&nbsp按钮开关符号;1.05f, 0.00f, 0.00f, 0.00f, 0.00f,
   &这段网恋不靠谱1v1鱼北笔趣阁nbsp; 前几天天气预报  看了暗恋者日记的下场&背景nbsp;  0.00f, 1.05f, 0.00f, 0.00f, 0.00f,
&nbs这段情越是浪漫越美妙什么歌p;        0.00f, 0.00f, 1.05f, 0.00f, 0.00f,
  &背景图微信nbsp;    &按钮nbsp;  0.00f, 0.00f, 0.00f,看了么下载 1.00f, 0.00f,
&nb按钮开关接线方法sp;    &n背景图全屏bsp; 看了就湿地小文章 &前几天胎动厉害这几天不动了nbsp;0.05f, 0.05f, 0.05f, 0.00f, 1.00f };
    Im这段网恋不靠谱poageAttributes ia;
    ia.SetColorMatrix(&HotMat);
    float width = (float)m_pStdImage->m_pBitmap->GetWidth();
    float height = (float)m_pStdImage->前几天吃了避孕药小腹疼怎么回事m_pBitmap->GetHeight();
    RectF grect; grect.X=0, grect.Y=0; grect.Width前几天哪里地震了 = width; grect.Height = height;
    graphics.DrawImage(*m_pAlt背景图干净治愈系仙气Image, gre前几天帮一个陌生人口了ct, 0, 0, width, height, UnitPixel, &ia);
    m_dcAltH.CreateCo按钮开关接线方法mpati按钮开关接线图bleDC(pDC);
  &nb前几天哪里地震了sp;&看了么下载nbsp;bmp.CreateCompatibl按钮图片eBitmap(pDC, rect.Width(),这段网恋不靠谱by鱼北 rect.Height()背景图动漫);
    pOldBitmap = m_dcAltH前几天哪里地震了.SelectObject(&bmp);
    m_d前几天的英文cAltH.BitBlt(0, 0, rect.Width(), rect.Heig前几天吃了避孕药今天有点血ht(), pDC, 0, 0, SRCCOPY);
    按钮英文bm看了么app下载p.DeleteObject();
  &nb前几天我养的兰花死了犯罪大师sp;}
  }
  if(m_pCurBtn == NULL)
  {
  &nbs背景图全屏p;m_pCurBtn = &m_dcStd;
  按钮英文}
  m_bHaveBitma这段ps = TRUE;
}
r前几天胎动厉害这几天不动了eturn NULL;
}
同时将绘制看了暗恋者日记的下场背景那里设置按钮开关为TRUE
在需要使用的程序中直接引用这个BUTTON即可!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|棋牌源码吧

GMT+8, 2024-9-17 04:11 , Processed in 0.066382 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表