c#图像截取实例

本文实例讲述了c#图像截取的实现方法。分享给大家供大家参考。具体如下:

图像截取的相关代码如下:

代码如下:

public Form1() 

   InitializeComponent(); 
}

private void button1_Click(object sender, EventArgs e) 

   Image pic = new Bitmap(this.Width, this.Height); 
   Graphics graphic = Graphics.FromImage(pic); 
   graphic.CopyFromScreen(new Point(this.Location.X, this.Location.Y), new Point(0, 0), new Size(this.Width, this.Height)); 
   pic.Save(@"d:/test.jpeg", ImageFormat.Jpeg); 
   graphic.Dispose(); 
}

[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")] 
private static extern bool BitBlt( 
   IntPtr hdcDest, //目标设备的句柄 
   int nXDest, // 目标对象的左上角的X坐标 
   int nYDest, // 目标对象的左上角的X坐标 
   int nWidth, // 目标对象的矩形的宽度 
   int nHeight, // 目标对象的矩形的长度 
   IntPtr hdcSrc, // 源设备的句柄 
   int nXSrc, // 源对象的左上角的X坐标 
   int nYSrc, // 源对象的左上角的X坐标 
   System.Int32 dwRop // 光栅的操作值 
   ); 
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")] 
private static extern IntPtr CreateDC( 
   string lpszDriver, // 驱动名称 
   string lpszDevice, // 设备名称 
   string lpszOutput, // 无用,可以设定位"NULL" 
   IntPtr lpInitData // 任意的打印机数据 
   );

private void Form1_SizeChanged(object sender, EventArgs e) 

  
}

private void button2_Click(object sender, EventArgs e) 

   this.Hide(); 
    
   IntPtr dc1 = CreateDC("DISPLAY", null, 
       null, (IntPtr)null); 
   //创建显示器的DC 
   Graphics g1 = Graphics.FromHdc(dc1); 
   //由一个指定设备的句柄创建一个新的Graphics对象 
   Bitmap MyImage = 
       new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
    Screen.PrimaryScreen.Bounds.Height, g1); 
   //根据屏幕大小创建一个与之相同大小的Bitmap对象 
   Graphics g2 = Graphics.FromImage(MyImage); 
   //获得屏幕的句柄 
   IntPtr dc3 = g1.GetHdc(); 
   //获得位图的句柄 
   IntPtr dc2 = g2.GetHdc(); 
   //把当前屏幕捕获到位图对象中 
   BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width, 
       Screen.PrimaryScreen.Bounds.Height, 
       dc3, 0, 0, 13369376); 
   //把当前屏幕拷贝到位图中 
   g1.ReleaseHdc(dc3); 
   //释放屏幕句柄 
   g2.ReleaseHdc(dc2); 
   //释放位图句柄

Bitmap img = new Bitmap(MyImage, 800, 600); 
   //缩放图片到800*600 
   img.Save("d:\\MyJpeg.jpg", ImageFormat.Jpeg); 
   MessageBox.Show("已经把当前屏幕保存到" + 
       "C:\\MyJpeg.jpg文件中!"); 
   this.Show(); 
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#图像处理之边缘检测(Smoothed)的方法

    本文实例讲述了C#图像处理之边缘检测(Smoothed)的方法.分享给大家供大家参考.具体如下: //定义smoothed算子边缘检测函数 private static Bitmap smoothed(Bitmap a) { int w = a.Width; int h = a.Height; try { Bitmap dstBitmap = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.D

  • C#数字图象处理之图像灰度化方法

    本文实例讲述了C#数字图象处理之图像灰度化方法.分享给大家供大家参考.具体如下: //定义图像灰度化函数 private static Bitmap PGray(Bitmap src) { int w = src.Width; int h = src.Height; //构建与原图像大小一样的模版图像 Bitmap dstBitmap = new Bitmap(src.Width, src.Height, System.Drawing.Imaging.PixelFormat.Format24bp

  • C#图像边缘检测(Roberts)的方法

    本文实例讲述了C#图像边缘检测(Roberts)的方法.分享给大家供大家参考.具体如下: //定义roberts算子函数 private static Bitmap robert(Bitmap a) { int w = a.Width; int h = a.Height; try { Bitmap dstBitmap = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imag

  • C#数字图像处理之图像二值化(彩色变黑白)的方法

    本文实例讲述了C#数字图像处理之图像二值化(彩色变黑白)的方法.分享给大家供大家参考.具体如下: //定义图像二值化函数 private static Bitmap PBinary(Bitmap src,int v) { int w = src.Width; int h = src.Height; Bitmap dstBitmap = new Bitmap(src.Width ,src.Height ,System .Drawing .Imaging .PixelFormat .Format24

  • C#图像处理之边缘检测(Sobel)的方法

    本文实例讲述了C#图像处理之边缘检测(Sobel)的方法.分享给大家供大家参考.具体如下: //定义sobel算子函数 private static Bitmap sobel(Bitmap a) { int w = a.Width; int h = a.Height; try { Bitmap dstBitmap = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imagin

  • C#实现图像反色的方法

    本文实例讲述了C#实现图像反色的方法.分享给大家供大家参考.具体如下: //定义图像反色函数 private static Bitmap PContray (Bitmap a) { int w = a.Width; int h = a.Height; Bitmap dstBitmap = new Bitmap(a.Width, a.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imaging.

  • 基于c#图像灰度化、灰度反转、二值化的实现方法详解

    图像灰度化:将彩色图像转化成为灰度图像的过程成为图像的灰度化处理.彩色图像中的每个像素的颜色有R.G.B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围.而灰度图像是R.G.B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些.灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征.图像的灰度

  • C#实现图像锐化的方法

    本文实例讲述了C#实现图像锐化的方法.分享给大家供大家参考.具体如下: //定义图像锐化函数 private static Bitmap Sharpen(Bitmap a,double v) { int w = a.Width; int h = a.Height; try { Bitmap dstBitmap = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imaging.

  • c#图像截取实例

    本文实例讲述了c#图像截取的实现方法.分享给大家供大家参考.具体如下: 图像截取的相关代码如下: 复制代码 代码如下: public Form1()  {     InitializeComponent();  } private void button1_Click(object sender, EventArgs e)  {     Image pic = new Bitmap(this.Width, this.Height);     Graphics graphic = Graphics

  • canvas实现图像截取功能

    本文实例为大家分享了canvas图像截取的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>canvas-图像截取</title> <style> canvas{ border: 1px dashed red; float: left; position: r

  • 在python中画正态分布图像的实例

    1.正态分布简介 正态分布(normal distribtution)又叫做高斯分布(Gaussian distribution),是一个非常重要也非常常见的连续概率分布.正态分布大家也都非常熟悉,下面做一些简单的介绍. 假设随机变量XX服从一个位置参数为μμ.尺度参数为σσ的正态分布,则可以记为: 而概率密度函数为 2.在python中画正态分布直方图 先直接上代码 import numpy as np import matplotlib.mlab as mlab import matplot

  • python 一个figure上显示多个图像的实例

    方法一:主要是inshow()函数的使用 首先基本的画图流程为: import matplotlib.pyplot as plt #创建新的figure fig = plt.figure() #必须通过add_subplot()创建一个或多个绘图 #ax = fig.add_subplot(221) #绘制2x2两行两列共四个图,编号从1开始 ax1 = fig.add_subplot(221) ax2 = fig.add_subplot(222) ax3 = fig.add_subplot(2

  • python存储16bit和32bit图像的实例

    笔记:python中存储16bit和32bit图像的方法. 说明:主要是利用scipy库和pillow库,比较其中的不同. ''' 测试16bit和32bit图像的python存储方法 ''' import numpy as np import scipy.misc from PIL import Image # 用已有的8bit和16bit图作存储测试 path16 = 'D:\Py_exercise\lena16.tif' path8 = 'D:\Py_exercise\lena8.tif'

  • 使用python绘制二元函数图像的实例

    废话少说,直接上代码: #coding:utf-8 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def function_2(x,y): # 这里的函数可以任意定义 return np.sum(x**2) fig = plt.figure() ax = Axes3D(fig) x = np.arange(-3,-3,0.1) y = np.arange(-3,

  • 使用pandas的DataFrame的plot方法绘制图像的实例

    使用了pandas的Series方法绘制图像体验之后感觉直接用matplotlib的功能好用了不少,又试用了DataFrame的方法之后发现这个更加人性化. 写代码如下: from pandas import Series,DataFrame from numpy.random import randn import numpy as np import matplotlib.pyplot as plt df = DataFrame(randn(10,5),columns=['A','B','C

  • 使用PyTorch训练一个图像分类器实例

    如下所示: import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as np print("torch: %s" % torch.__version__) print("tortorchvisionch: %s" % torchvision.__version__) print(&

  • opencv python图像梯度实例详解

    这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一阶导数与Soble算子 二阶导数与拉普拉斯算子 图像边缘: Soble算子: 二阶导数: 拉普拉斯算子: import cv2 as cv import numpy as np # 图像梯度(由x,y方向上的偏导数和偏移构成),有一阶导数(sobel算子)和二阶导数(Laplace算子) # 用于求解图像边缘,一阶的极大值,二阶的零点

  • pytorch加载自己的图像数据集实例

    之前学习深度学习算法,都是使用网上现成的数据集,而且都有相应的代码.到了自己开始写论文做实验,用到自己的图像数据集的时候,才发现无从下手 ,相信很多新手都会遇到这样的问题. 参考文章https://www.jb51.net/article/177613.htm 下面代码实现了从文件夹内读取所有图片,进行归一化和标准化操作并将图片转化为tensor.最后读取第一张图片并显示. # 数据处理 import os import torch from torch.utils import data fr

随机推荐