DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: gtgtfgtgdsf12S
今日帖子: 7
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 yhli (yhli) ▲▲▲▲▲ -
注册会员
2018/8/9 16:36:55
标题:
高分屏4K显示器下,Delphi编译的程序按钮图标太小问题 浏览:595
加入我的收藏
楼主: 高分屏4K显示器下,Delphi编译的程序按钮图标太小,见图示,请大侠指点解决办法,谢谢!如不勾选“(Project>Options>Application>)Enable High-DPI”, 则图标大小正常,但菜单字体清晰度降低。
此帖子包含附件:
PNG 图像
大小:251.1K
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2018/8/9 16:45:16
1楼: https://quality.embarcadero.com
欢迎您

没有账号的请到
http://edn.embarcadero.com
注册

如果低于 10.2.3,请先证明 10.2.3 也有相同问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yhli (yhli) ▲▲▲▲▲ -
注册会员
2018/8/9 16:50:50
2楼: 是10.2.3
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲△△△ -
注册会员
2018/8/10 8:36:26
3楼: http://zarko-gajic.iz.hr/delphi-high-dpi-road-ensuring-your-ui-looks-correctly/
----------------------------------------------
Delphi4Linux交流群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 yhli (yhli) ▲▲▲▲▲ -
注册会员
2018/8/10 8:53:37
4楼: to : earthsbest (全能中间件)
非常感谢!就是对这一问题的说明!
----------------------------------------------
-
作者:
男 roker (roker) ★☆☆☆☆ -
盒子活跃会员
2018/8/10 14:09:12
5楼: 最后这个问题怎么解决的?
----------------------------------------------
-
作者:
男 yhli (yhli) ▲▲▲▲▲ -
注册会员
2018/8/10 17:22:43
6楼:  earthsbest (全能中间件)推荐的方法好用。以下过程可以在application.formcreate中直接调用,注意uses CommCtrl {ImageList_DrawEx}。
 过程代码如下:
procedure TfMain.ResizeImageListImagesforHighDPI(const imgList: TImageList);
{http://zarko-gajic.iz.hr/resizing-delphis-timagelist-bitmaps-to-fit-high-dpi-
scaling-size-for-menus-toolbars-trees-etc/}
const
  DevImgSIZE = 16;
var
  ii : integer;
  mb, ib, sib, smb : TBitmap;
begin
  if Screen.PixelsPerInch = 96 then Exit; //没有勾选“Enable High-DPI”, Screen.PixelsPerInch=96.
  //clear images
  highDPIImageListContainer.Clear;
  //add from source image list
  for ii := 0 to -1 + imgList.Count do
    highDPIImageListContainer.AddImage(imgList, ii);
  //set size to match DPI size (like 250% of 16px = 40px)
  imgList.SetSize(MulDiv(DevImgSIZE, Screen.PixelsPerInch, 96), MulDiv(DevImgSIZE, Screen.PixelsPerInch, 96));
  //add images back to original ImageList stretched (if DPI scaling > 150%) or centered (if DPI scaling <= 150%)
  for ii := 0 to -1 + highDPIImageListContainer.Count do
  begin
    sib := TBitmap.Create; //stretched (or centered) image
    smb := TBitmap.Create; //stretched (or centered) mask
    try
      sib.Width := imgList.Width;
      sib.Height := imgList.Height;
      sib.Canvas.FillRect(sib.Canvas.ClipRect);
      smb.Width := imgList.Width;
      smb.Height := imgList.Height;
      smb.Canvas.FillRect(smb.Canvas.ClipRect);
      ib := TBitmap.Create;
      mb := TBitmap.Create;
      try
        ib.Width := DevImgSIZE;
        ib.Height := DevImgSIZE;
        ib.Canvas.FillRect(ib.Canvas.ClipRect);
        mb.Width := DevImgSIZE;
        mb.Height := DevImgSIZE;
        mb.Canvas.FillRect(mb.Canvas.ClipRect);
        ImageList_DrawEx(highDPIImageListContainer.Handle, ii, ib.Canvas.Handle, 0, 0, ib.Width, ib.Height, CLR_NONE, CLR_NONE, ILD_NORMAL);
        ImageList_DrawEx(highDPIImageListContainer.Handle, ii, mb.Canvas.Handle, 0, 0, mb.Width, mb.Height, CLR_NONE, CLR_NONE, ILD_MASK);
        if Screen.PixelsPerInch * 100 / 96 <= 150 then //center if <= 150%
        begin
          sib.Canvas.Draw((sib.Width - ib.Width) DIV 2, (sib.Height - ib.Height) DIV 2, ib);
          smb.Canvas.Draw((smb.Width - mb.Width) DIV 2, (smb.Height - mb.Height) DIV 2, mb);
        end
        else //stretch if > 150%
        begin
          sib.Canvas.StretchDraw(Rect(0, 0, sib.Width, sib.Width), ib);
          smb.Canvas.StretchDraw(Rect(0, 0, smb.Width, smb.Width), mb);
        end;
      finally
        ib.Free;
        mb.Free;
      end;
      imgList.Add(sib, smb);
    finally
      sib.Free;
      smb.Free;
    end;
  end;
end;
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行46.875毫秒 RSS