欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

wpf-截取屏幕上指定区域

程序员文章站 2022-06-07 15:16:17
...
private void OnMenuExportGraph(object sender, RoutedEventArgs e)
{
    if (_isLoaded == false)
    {
        MessageBox.Show("请先导入文件", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
    }
    else
    {
        int w = (int)this.Width;
        int h = (int)this.Height;
        // 自定义的处理方法
        int imgWidth = (int)(...);
        int imgHeight = (int)(...);
        //Bitmap bit = new Bitmap(w, h);//实例化一个和窗体一样大的bitmap
        Bitmap bit = new Bitmap(imgWidth, imgHeight);
        Graphics g = Graphics.FromImage(bit);
        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;//质量设为最高
        g.CopyFromScreen((int)(this.Left+10), (int)(this.Top+65), (int)(0), (int)(0), new System.Drawing.Size(imgWidth, imgHeight));
        // 指定存储位置
        var dialog = new SaveFileDialog();
        if (dialog.ShowDialog().GetValueOrDefault()) {
            string filePath = dialog.FileName;
            try
            {
                bit.Save(filePath);//默认保存格式为PNG,保存成jpg格式质量不是很好
                MessageBox.Show("OK");
            }
            catch (Exception) {
                MessageBox.Show("请检查存储位置", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }                   
    }
}

第一次写成这样:Bitmap bit = new Bitmap(w, h),导致打开时总有两条线在角落里。改变大小时,线段时有时无。后来发现是透明的背景,如下图。
wpf-截取屏幕上指定区域
把bit改小一些就可以了。
wpf-截取屏幕上指定区域

相关标签: c#和WPF wpf

上一篇: textmate使用

下一篇: 日期类