zoukankan      html  css  js  c++  java
  • MFC图片自适应

    MFC图片自适应方法:

    void CSimMachineLogin::OnPaint()
    {
     CPaintDC dc(this); // device context for painting
     // TODO:  在此处添加消息处理程序代码
     int height, width;
     CRect rect;//定义矩形类
     CRect rect1;
     CImage image; //创建图片类

     CString workPath = Common::GetAppInstallDir();
     CString path = workPath + _T("\logo.png");
     image.Load(path);
     height = image.GetHeight();
     width = image.GetWidth();

     p_PICTURE.GetClientRect(&rect); //获得pictrue控件所在的矩形区域
     CDC *pDc = p_PICTURE.GetDC();//获得pictrue控件的Dc
     SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);

     if (width <= rect.Width() && height <= rect.Width()) //小图片,不缩放
     {
      rect1 = CRect(rect.TopLeft(), CSize(width, height));
      image.StretchBlt(pDc->m_hDC, rect1, SRCCOPY); //将图片画到Picture控件表示的矩形区域
     }
     else
     {
      //float xScale = (float)rect.Width() / (float)width;
      //float yScale = (float)rect.Height() / (float)height;
      //float ScaleIndex = (xScale >= yScale) ? xScale : yScale;
      //rect1 = CRect(rect.TopLeft(), CSize((int)width*ScaleIndex, (int)height*ScaleIndex));
      //
      CRect clientRect, tabRect;
      this->GetClientRect(&clientRect);    // 获取标签控件客户区Rect  
      tabRect.left = clientRect.left;
      tabRect.right = clientRect.right;
      tabRect.top = clientRect.top;
      tabRect.bottom = clientRect.top + 0.45 * clientRect.Height();
      p_PICTURE.MoveWindow(&tabRect);
      tabRect.top = clientRect.top+30;
      image.StretchBlt(pDc->m_hDC, tabRect, SRCCOPY); //将图片画到Picture控件表示的矩形区域
     }
     ReleaseDC(pDc);//释放picture控件的Dc
     
     // 不为绘图消息调用 CDialogEx::OnPaint()
    }

  • 相关阅读:
    简单入门Kubernetes
    什么是知识
    Kubernetes的安装
    Netty简单使用
    Hystrix 容错处理
    一文总结之MyBatis
    基于协同过滤算法的电影推荐系统 利用修正的余弦相似度算法做影片推荐。
    linux 常用命令记录
    orcale增量全量实时同步mysql可支持多库使用Kettle实现数据实时增量同步
    ThreadUtil 多线程处理List,回调处理具体的任务
  • 原文地址:https://www.cnblogs.com/sheyingqi/p/6873777.html
Copyright © 2011-2022 走看看