Как отобразить на одной из двух моих форм выбранную область?
У меня есть небольшая программа, которая выбирает часть экрана и сохраняет ее в файл jpg или PDF, выбирая местоположение и размер Form2 со свойствами BorderStyle None, BackColor Aqua, Opacity 60%, WindowsState Normal и TopMost False. Он использует MouseDown, MouseMove и MouseUp в Form1 для выбора области из любого места на экране, поскольку свойство Form1 WindowsState имеет значение Maximized, BorderStyle-None, непрозрачность-2%, курсор-Cross и TopMost-True.
Программа отлично справляется с сохранением выделенной области либо в jpg-файл, либо в PDF-файл. Что я не могу сделать, так это отобразить выбранную область на экране после выбора, но перед сохранением в файл jpg или PDF. Я пробовал много вещей, но ничего не работает.
Вот код из интересующей области:
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown Form2.Show() Form2.Location = Cursor.Position 'This is the starting X Y position End Sub Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove Form2.Size = Cursor.Position - Form2.Location 'This is the size, width & height, (X2-X1 & Y2-Y1) End Sub Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp Form2.Hide() Me.Hide() Dim screenshot = New System.Drawing.Bitmap(Form2.Width, Form2.Height) Dim graph As Graphics = Graphics.FromImage(screenshot) graph.CopyFromScreen(Form2.Bounds.X, Form2.Bounds.Y, 0, 0, Form2.Size) Form2.BackgroundImage = screenshot 'Need code here to display the selected area before saving as jpg or PDF Threading.Thread.Sleep(2000) If MessageBox.Show("Save as JPG?", "File Type", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _ Windows.Forms.DialogResult.Yes Then Dim sPath As New SaveFileDialog sPath.Filter = "Image(*.jpg)|*,*" sPath.ShowDialog() Dim bmp As Bitmap = Form2.BackgroundImage bmp.Save(sPath.FileName + ".jpg") Else MessageBox.Show("You are saving as a PDF file")
Что я уже пробовал:
graph.DrawImage(Form2.BackgroundImage, 20, 30)