小小小陆 2023-02-17 16:24
浏览 16
已结题

屏幕的缩放与布局设置125%后,图片显示不全

屏幕的缩放与布局设置125%后,图片显示不全

            var fg =this.CreateGraphics();
            Bitmap bmp;
            Metafile curMetafile = null;
            Graphics g = this.CreateGraphics();
            IntPtr hdc = g.GetHdc();
            try
            {
                using (var ms = new MemoryStream())
                {
                    curMetafile = new Metafile(ms, hdc);
                    Graphics g1 = Graphics.FromImage(curMetafile);
                    g1.SmoothingMode = SmoothingMode.HighQuality;

                    g1.FillEllipse(new SolidBrush(Color.Red), new RectangleF(0, 0, 500, 500));

                    g.ReleaseHdc(hdc);
                    g1.Dispose();
                    g.Dispose();
                    Bitmap bitmap = new Bitmap(curMetafile);
                    pictureBox1.Image = bitmap;
                    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
                g.ReleaseHdc(hdc);
                g.Dispose();
                return;
            }
            }

img

比例设置为100%时 ,显示是正常的。

img


但是设置为125%时,显示就不全了,请教一下大家有解决办法吗?

  • 写回答

1条回答 默认 最新

  • 小小小陆 2023-02-17 17:06
    关注
    
    private byte[] GetImageData()
            {
                var fg = this.CreateGraphics();
                Metafile curMetafile = null;
                Graphics g = this.CreateGraphics();
                IntPtr hdc = g.GetHdc();
                try
                {
                    using (var ms = new MemoryStream())
                    {
                        curMetafile = new Metafile(ms, hdc);
                        Graphics g1 = Graphics.FromImage(curMetafile);
                        g1.SmoothingMode = SmoothingMode.HighQuality;
                        g1.PixelOffsetMode = PixelOffsetMode.HighSpeed;
                        g1.FillEllipse(new SolidBrush(Color.Red), new RectangleF(0, 0, 500, 500));
    
                        g.ReleaseHdc(hdc);
                        g1.Dispose();
                        g.Dispose();
                        return ms.ToArray();
    
                    }
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.Message);
                    g.ReleaseHdc(hdc);
                    g.Dispose();
                    return null;
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = Image.FromStream(new MemoryStream(GetImageData()));
                pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 修改了问题 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题