Май 31, 2013 - Уроки Visual Basic.NET 6 комментариев
Создание скриншота области экрана
Написал пример создания снимка области экрана, не используя класс Graphics и структуру Rectangle, как сделано в FastScreen.
Нам потребуется всего лишь один PictureBox.
Правда есть небольшой нюанс, при выделении области в левую строну экрана, край PB дергается.
На всякий случай, если у кого то получилось это исправить, напишите мне, я обязательно внесу изменения в статью.
Imports System.Drawing.Imaging Public Class Form1 Public Sub New() InitializeComponent() Me.Left = 0 Me.Top = 0 Me.Width = Screen.PrimaryScreen.Bounds.Width Me.Height = Screen.PrimaryScreen.Bounds.Height Me.BackColor = Color.Black Me.TransparencyKey = Color.Yellow Me.Opacity = 0.7 Me.TopMost = True Me.Cursor = Cursors.Cross PictureBox1.BackColor = Color.Yellow End Sub Dim xy1 As Point, xy2 As Point Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown xy1 = e.Location End Sub Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove If e.Button = Windows.Forms.MouseButtons.Left Then xy2 = e.Location PictureBox1.Location = New Point(Math.Min(xy1.X, xy2.X), Math.Min(xy1.Y, xy2.Y)) PictureBox1.Size = New Size(Math.Max(xy1.X, xy2.X) - PictureBox1.Location.X, Math.Max(xy1.Y, xy2.Y) - PictureBox1.Location.Y) End If End Sub Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height) Dim g As Graphics = Graphics.FromImage(bmp) g.CopyFromScreen(New Point(PictureBox1.Left, PictureBox1.Top), New Point(0, 0), New Point(PictureBox1.Width, PictureBox1.Height)) bmp.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\1.jpg", ImageFormat.Jpeg) MsgBox("Снимок создан") : PictureBox1.Size = New Size(0, 0) End Sub End Class
Похожие записи:
Метки: скриншот, Создание скриншота области экрана
Евгений
Просмотров: 9 929
Запись опубликована в 11:31
Разве "небольшой" пишется раздельно;)
Спасибо, поправил
Me.Opacity = 0.01
g.CopyFromScreen(New Point(PictureBox1.Left, PictureBox1.Top), New Point(0, 0), New Point(PictureBox1.Width, PictureBox1.Height))
Me.Opacity = 0.7
Me.Opacity = 0.01
g.CopyFromScreen(New Point(PictureBox1.Left, PictureBox1.Top), New Point(0, 0), New Point(PictureBox1.Width, PictureBox1.Height))
Me.Opacity = 0.7
А как в FastScreen'е?
"На всякий случай, если у кого то получилось это исправить, напишите мне, я обязательно внесу изменения в статью"
Да пожалуйста, вставить в класс формы
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H2000000
Return cp
End Get
End Property