Найти тему
Горизонт

Скриншоты экрана.

Как бы там ни было с "доносами" на ИИ, эти доносы могут быть и положительными. Так, нейронная сеть, Клод( Claude 3,5 Sonnet ), теперь, отличается тем, что можно легко вводить, кроме прочих, довольно большие тексты и цифровых, программных кодов, для анализа, исправления и улучшения такой сетью. В том числе, и для пользователей ограниченного, но свободного плана. Для этого, тексты ни требуется дополнительно специально готовить, каким-либо образом, просто вставляя текст из буфера обмена, в поле запроса можно сразу получить готовое оформление текста в отдельное целое, с которым сеть далее может работать по запросу пользователя. И, это довольно часто срабатывает. То есть, нейронная сеть довольно сметливо, оценивая в человеческих мерках, инкрустирует в готовый код новые функции по запросу, преобразовывает уже имеющийся код для иных целей и задач, сохраняя необходимые функции и методы. И да, это может быть, куда как удобно. Тем более, что свободный ни лимитированный план GPT4-o, таким же образом, словно и "Клод", предоставляет время для вхождения в процесс создания кодов и программ, теперь, кроме прочих, нейронной сети "Клод". Так, в код программы записи экрана в видео файл, часть которой была создана, как раз, той же нейронной сетью, а именно часть, относящаяся к созданию ближайшего экрана монитора, удалось добавить опцию скриншота на основе кода такого временного экрана переднего плана монитора, на котором можно выделить выбранную область, включая практически всю площадь, а иногда и всю площадь экрана монитора. После чего, такую опцию оказалось легко, в виду ООП, добавить в графический редактор, в котором теперь можно делать скриншоты не только бланка формы с любыми элементами управления и тем что размещено в таких окнах, пользовательского интерфейса программы, будет ли она развернута на весь экран монитора или нет, но любой части ближайшего временного экрана переднего плана монитора. Это состояние может быть, в известном смысле, невероятно красноречивой демонстрацией особенности действительных границ, на которых находиться, вообще говоря, любое тело. Они, и внешние, и внутренние. Для органических тел, это может быть, тем более, значимо. Пожимая самим себе руку, мы находимся, и вне, и внутри тела, неким образом, и из внутри, и из вне. Аналогия может быть отчасти прямой. Делая скриншот экрана, опция позволяет снимать ни только поверхность бланка формы, но и любую иную на экране монитора. Но сохранить изображение можно только через буфер обмена и вставив его на бланк формы пользовательского интерфейса программы графического редактора, или быть может, разместив в более специально выбранный и предназначенный для этого элемент управления, условно размещенный на бланке формы интерфейса такого редактора. Вообще же говоря, практически в любое иное окно, любого иного элемента управления, что может быть таким окном размещения, кроме прочего, для картинок и изображений. Это в известном смысле трансгрессия границы ни покидает таким образом, но в известном смысле может существенно расширить возможности быстро собирать и объединять изображения посредством графического редактора. Программа Майкрософт "Ножницы", словно и множество иных программ добавляют в программу изготовления скриншота некоторые функции графических редакторов, почему бы ни добавить функцию скриншота в графический редактор? Таков может быть результирующий код, VB, Net 4.7.2 и выше, Net 6, GUI, Option Strict On, Windows7и выше. Для рабочего стола.

'Ссылки на пространства имен
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Runtime.InteropServices

'Объявления и декларации переменных


'Пользовательская область экрана
Private selectedArea As Rectangle
Private isSelectingArea As Boolean = False
Private startPoint As Point
Private selectionForm As Form
Private capturedImage As Image

' P/Invoke declarations
<DllImport("user32.dll")>
Private Shared Function GetCursorPos(ByRef lpPoint As Point) As Boolean
End Function

#Region "Пользовательская область User Region, скриншоты экрана"

Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged

Try

Tab2()

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub Button121_Click(sender As Object, e As EventArgs) Handles Button121.Click

Try

If RadioButton3.Checked = True Then

selectionForm = New Form()

selectionForm.FormBorderStyle = FormBorderStyle.None

selectionForm.Opacity = 0.5

selectionForm.BackColor = Color.Gray

selectionForm.Cursor = Cursors.Cross

selectionForm.WindowState = FormWindowState.Maximized

selectionForm.TopMost = True

AddHandler selectionForm.MouseDown, AddressOf SelectionForm_MouseDown

AddHandler selectionForm.MouseMove, AddressOf SelectionForm_MouseMove

AddHandler selectionForm.MouseUp, AddressOf SelectionForm_MouseUp

AddHandler selectionForm.KeyDown, AddressOf SelectionForm_KeyDown

selectionForm.Show()

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub Button122_Click(sender As Object, e As EventArgs) Handles Button122.Click

Try

If RadioButton3.Checked = True Then

selectionForm = New Form()

selectionForm.FormBorderStyle = FormBorderStyle.None

selectionForm.Opacity = 0.5

selectionForm.BackColor = Color.Gray

selectionForm.Cursor = Cursors.Cross

selectionForm.WindowState = FormWindowState.Maximized

selectionForm.TopMost = True

AddHandler selectionForm.MouseDown, AddressOf SelectionForm_MouseDown

AddHandler selectionForm.MouseMove, AddressOf SelectionForm_MouseMove

AddHandler selectionForm.MouseUp, AddressOf SelectionForm_MouseUp

AddHandler selectionForm.KeyDown, AddressOf SelectionForm_KeyDown

selectionForm.Show()

'Form minimaize

Form3.WindowState = FormWindowState.Minimized

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub SelectionForm_MouseDown(sender As Object, e As MouseEventArgs)

Try

If RadioButton3.Checked = True Then

startPoint = e.Location

isSelectingArea = True

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub SelectionForm_MouseMove(sender As Object, e As MouseEventArgs)

Try

If RadioButton3.Checked = True Then

If isSelectingArea Then

Dim g As Graphics = selectionForm.CreateGraphics()

g.Clear(Color.Gray)

g.DrawRectangle(Pens.Red, GetRectangle(startPoint, e.Location))

End If

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub SelectionForm_MouseUp(sender As Object, e As MouseEventArgs)

Try

If RadioButton3.Checked = True Then

isSelectingArea = False

selectedArea = GetRectangle(startPoint, e.Location)

selectionForm.Close()

' Capture the selected area

Using bmp As New Bitmap(selectedArea.Width, selectedArea.Height)

Using g As Graphics = Graphics.FromImage(bmp)

g.CopyFromScreen(selectedArea.Location, Point.Empty, selectedArea.Size)

End Using

capturedImage = New Bitmap(bmp)

Clipboard.SetImage(capturedImage)

End Using

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

MessageBox.Show("Область скопирована в буфер обмена", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information)

End Sub

Private Sub SelectionForm_KeyDown(sender As Object, e As KeyEventArgs)

Try

If RadioButton3.Checked = True Then

If e.KeyCode = Keys.Escape Then

selectionForm.Close()

End If

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Function GetRectangle(p1 As Point, p2 As Point) As Rectangle

Try

If RadioButton3.Checked = True Then

Return New Rectangle(Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y), Math.Abs(p1.X - p2.X), Math.Abs(p2.Y - p1.Y))

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Function

Private Sub PastToForm1Bl_MouseDown(sender As Object, e As MouseEventArgs)

Try

If RadioButton3.Checked = True Then

If RadioButton2.Checked = True Then Exit Sub

If e.X - m_X = 0 And e.Y - m_Y = 0 Then Exit Sub

sel = True

If Clipboard.ContainsImage() Then

Dim cursorPosition As Point

GetCursorPos(cursorPosition)

cursorPosition = Me.PointToClient(cursorPosition)

Dim pasteImage As Image = Clipboard.GetImage()

Using g As Graphics = Me.CreateGraphics()

g.DrawImage(pasteImage, cursorPosition)

End Using

End If

'Dim screenPoint As Point

'screenPoint = PointToScreen(New Point(e.X, e.Y))

'If My.Computer.Clipboard.ContainsImage Then

'originalImage = CType(My.Computer.Clipboard.GetImage, Bitmap)

' currentImage = CType(originalImage.Clone(), Image)

' Dim Графика As Graphics = CreateGraphics()

'Графика.DrawImage(originalImage, screenPoint)

' Графика.Dispose()

' My.Computer.Clipboard.Clear()

'End If

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Protected Overridable Sub OnPaint1(e As PaintEventArgs)

MyBase.OnPaint(e)

Try

If capturedImage IsNot Nothing Then

e.Graphics.DrawImage(capturedImage, Point.Empty)

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

#End Region

"СТЛА"

Караваев В.Г.