使用GDI+绘制对话框png背景

时间:2022-11-08 10:58:21
下载了GDI+SDK,照着网上的代码示例写总是不能通过编译。请帮忙写一个在对话框上绘制png背景图片的例子学习下(背景图片以资源ID加载,如ID为IDC_PNG1)

7 个解决方案

#1


楼主的结贴率要加强啊!!!  你是要做 异形窗口吗?

#2


这也太直白了吧
能不能说说你有遇到了什么问题
让大家帮你出出主意

#3


引用 2 楼  的回复:
这也太直白了吧
能不能说说你有遇到了什么问题
让大家帮你出出主意

我用GDI+为窗体加载了一个png图片背景(现在已经加载成功了),但是窗体一旦移动几次后,png图片的边缘半透明部分就会变成全黑色,这个要如何弄才能保持原样的图片效果呢?
我是在OnPaint函数中加了个自己写的MyPaint函数,函数实现如下:
void CBookDlg::MyPaint(CPaintDC *pdc,CRect rect)
{
    //加载png图片
CDC *pDC =GetDC();
Graphics graphics( pDC->m_hDC);
Image *m_Png;
ImageFromIDResource(IDR_PNG,"PNG",m_Png);

CRect pngRect;
GetWindowRect(&pngRect);


graphics.DrawImage(m_Png, 0,0,pngRect.Width(),pngRect.Height());

}

然后在OnPaint的else子句中调用:
       //重画背景
       CRect rcClient;
      GetClientRect(rcClient);
      CPaintDC dc(this);
      MyPaint(&dc,rcClient);

#4


是啊,是要透明效果还是要动画,png可取之处

#5


void CBookDlg::MyPaint(CPaintDC * pdc,CRect rect)
{
  //加载png图片
CDC *pDC =GetDC();
Graphics graphics(  pDC->m_hDC);

#6


引用 5 楼  的回复:
void CBookDlg::MyPaint(CPaintDC * pdc,CRect rect)
{
  //加载png图片
CDC *pDC =GetDC();
Graphics graphics(  pDC->m_hDC);

#7


#1


楼主的结贴率要加强啊!!!  你是要做 异形窗口吗?

#2


这也太直白了吧
能不能说说你有遇到了什么问题
让大家帮你出出主意

#3


引用 2 楼  的回复:
这也太直白了吧
能不能说说你有遇到了什么问题
让大家帮你出出主意

我用GDI+为窗体加载了一个png图片背景(现在已经加载成功了),但是窗体一旦移动几次后,png图片的边缘半透明部分就会变成全黑色,这个要如何弄才能保持原样的图片效果呢?
我是在OnPaint函数中加了个自己写的MyPaint函数,函数实现如下:
void CBookDlg::MyPaint(CPaintDC *pdc,CRect rect)
{
    //加载png图片
CDC *pDC =GetDC();
Graphics graphics( pDC->m_hDC);
Image *m_Png;
ImageFromIDResource(IDR_PNG,"PNG",m_Png);

CRect pngRect;
GetWindowRect(&pngRect);


graphics.DrawImage(m_Png, 0,0,pngRect.Width(),pngRect.Height());

}

然后在OnPaint的else子句中调用:
       //重画背景
       CRect rcClient;
      GetClientRect(rcClient);
      CPaintDC dc(this);
      MyPaint(&dc,rcClient);

#4


是啊,是要透明效果还是要动画,png可取之处

#5


void CBookDlg::MyPaint(CPaintDC * pdc,CRect rect)
{
  //加载png图片
CDC *pDC =GetDC();
Graphics graphics(  pDC->m_hDC);

#6


引用 5 楼  的回复:
void CBookDlg::MyPaint(CPaintDC * pdc,CRect rect)
{
  //加载png图片
CDC *pDC =GetDC();
Graphics graphics(  pDC->m_hDC);

#7