当前位置:编程学习 > C#/ASP.NET >>

为什么加入全屏就不能把图片显示了呢

不加入this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;这句话就行加入了就不能工作了
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace 截屏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();


            //this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            //this.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
        }
       [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
        private static extern bool BitBlt(
        IntPtr hdcDest,   //   目标   DC的句柄   
        int nXDest,
        int nYDest,
        int nWidth,
        int nHeight,
        IntPtr hdcSrc,     //   源DC的句柄   
        int nXSrc,
        int nYSrc,
        System.Int32 dwRop     //   光栅的处理数值   
        );
        [System.Runtime.InteropServices.DllImport("gdi32.dll")]
        public static extern IntPtr CreateDC(
        string lpszDriver, // 驱动名称
        string lpszDevice, // 设备名称
        string lpszOutput, // 无用,可以设定位"NULL"
        IntPtr lpInitData // 任意的打印机数据
        );


        private void button1_Click(object sender, EventArgs e)
        {
            //获得当前屏幕的大小
            Rectangle rect = new Rectangle();
            rect = Screen.GetWorkingArea(this);
            //创建一个以当前屏幕为模板的图象
            Graphics g1 = this.CreateGraphics();
            //创建以屏幕大小为标准的位图 
            Image MyImage = new Bitmap(rect.Width, rect.Height, g1);
            Graphics g2 = Graphics.FromImage(MyImage);
            //得到屏幕的DC
            IntPtr dc1 = g1.GetHdc();
            //得到Bitmap的DC 
            IntPtr dc2 = g2.GetHdc();
            //调用此API函数,实现屏幕捕获
            BitBlt(dc2, 0, 0, rect.Width, rect.Height, dc1, 0, 0, 13369376);
            //释放掉屏幕的DC
            g1.ReleaseHdc(dc1);
            //释放掉Bitmap的DC 
            g2.ReleaseHdc(dc2);
            //以JPG文件格式来保存
            MyImage.Save(@"c:\Capture.jpg", ImageFormat.Jpeg);
            MessageBox.Show("当前屏幕已经保存为C盘的capture.jpg文件!");
        }
        public Bitmap getscreen(int left, int top, int width, int height)
        {
            IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null);
            Graphics newGraphics = Graphics.FromHdc(dc1);
            Bitmap img = new Bitmap(width, height, newGraphics);
            Graphics thisGraphics = Graphics.FromImage(img);
            IntPtr dc2 = thisGraphics.GetHdc();
            IntPtr dc3 = newGraphics.GetHdc();
            BitBlt(dc2, 0, 0, width, height, dc3, left, top, 13369376);
            thisGraphics.ReleaseHdc(dc2);
            newGraphics.ReleaseHdc(dc3);
            return img;
        }


        private void button2_Click(object sender, EventArgs e)
        {
            Image MyImage = getscreen(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            MyImage.Save(@"c:\Capture.png", ImageFormat.Png);
            MessageBox.Show("当前屏幕已经保存为C盘的capture.jpg文件!");
            Graphics g1 = this.CreateGraphics(); 
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
            g1.DrawImage(MyImage, new Point(100, 100));
        }

    }
}
--------------------编程问答-------------------- God好长.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,