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

屏幕的缩放与布局设置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日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!