VB.net yardim Multi Screen Capture

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Uzman Üye
Katılım
13 Ara 2018
Mesajlar
192
Çözümler
1
Tepki puanı
22
Ödüller
8
Yaş
31
7 HİZMET YILI
Merhaba Arkadaslar

VB.net ile ScreenShot Projesi basladim

Bi konuda devam edemiorum.

2.Monitor dan Screenshot yapmak istiorum

misal

Formload da 2. veya daha Fazla Monitor tariorum ve oluyor

VB.Net:
 If Screen.AllScreens.Length > 1 Then

            monitorvarcheck.Enabled = True
        Else
            monitorvarcheck.Enabled = False


        End If

2.Formu 2.Monitorda aciorum buda oluyor

VB.Net:
Dim ekran As Screen
            ekran = Screen.AllScreens(1)
            Form2.StartPosition = FormStartPosition.Manual
            Form2.WindowState = FormWindowState.Maximized
            Form2.Location = ekran.Bounds.Location

Simdi 2. Formda Görünmez bir Form var ve Paint ile o Formun üstünde Mouse Event ile bir Rectangle
olusturuyorum ve bu Rectangle icerigini Screenshotlamak istiorum
bana sadece 1. Monitorda yaptigim Rectanle posisyonun icerigini gösterior

1.Monitor da hic bir SIkIntI yok


VB.Net:
Private Function MakeScreenShot() As Bitmap
     
        Dim Bmp As Bitmap = New Bitmap(rect1.Width, rect1.Height)

        Using Gra As Graphics = Graphics.FromImage(Bmp)  
            Gra.CopyFromScreen(rect1.Location, New Point(0, 0), rect1.Size)
        End Using
        ' Bitmap an Funktion übergeben
        Return Bmp


Private Sub Bereich_Makieren_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp


' Mouse sol click birakildiginda Rectangle icerigini yani karenin icerigini Pictureboxa gönderiror
        IsMouseDown = False

            Dim shot As Bitmap

            Me.Hide()
            Threading.Thread.CurrentThread.Sleep(500)

            shot = MakeScreenShot()

            Me.Close()
            Form1.Show()


            Form1.PictureBox1.Image = shot

evet Arkadaslar

Sorunum Ikinci Monitor dan ayni 1.Monitordaki gibi Olusturdum Rectangle icerini Form1 deki Picturebox a yapistirmasi.


Simdiden Yardim lariniz icin Tessekkürler

Türkcem icin kusura bakmayin
 
Banlı Üye
Katılım
20 Kas 2017
Mesajlar
219
Çözümler
1
Tepki puanı
64
Ödüller
5
8 HİZMET YILI
Kod:
mports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Public Class Form1

    Private Sub screenCapture()
        Dim userName As String = Environment.UserName
        Dim savePath As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
        Dim dateString As String = Date.Now.ToString("yyyyMMddHHmmss")
        Dim captureSavePath As String = String.Format("{0}\WM\{1}\capture_{2}.png", savePath, userName, dateString)


        ' Burası ikinci monitör için farklı çözünürlüğü ayarlamak için. Tek monitör ise kaldırınız.
        Dim bmp As Bitmap = New Bitmap( _
                            Screen.AllScreens.Sum(Function(s As Screen) s.Bounds.Width),
                            Screen.AllScreens.Max(Function(s As Screen) s.Bounds.Height))
        Dim gfx As Graphics = Graphics.FromImage(bmp)
        ' This line is modified to take everything based on the size of the bitmap
        gfx.CopyFromScreen(SystemInformation.VirtualScreen.X,
                           SystemInformation.VirtualScreen.Y,
                           0, 0, SystemInformation.VirtualScreen.Size)



        Panel1.BackgroundImage = bmp.Clone

        gfx.Dispose()
        bmp.Dispose()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        updateScreen.Start()
    End Sub

    Private Sub updateScreen_Tick(sender As Object, e As EventArgs) Handles updateScreen.Tick
        screenCapture()
    End Sub
End Class

İyi forumlar.
 
Uzman Üye
Katılım
13 Ara 2018
Mesajlar
192
Çözümler
1
Tepki puanı
22
Ödüller
8
Yaş
31
7 HİZMET YILI
Kod:
mports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Public Class Form1

    Private Sub screenCapture()
        Dim userName As String = Environment.UserName
        Dim savePath As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
        Dim dateString As String = Date.Now.ToString("yyyyMMddHHmmss")
        Dim captureSavePath As String = String.Format("{0}\WM\{1}\capture_{2}.png", savePath, userName, dateString)


        ' Burası ikinci monitör için farklı çözünürlüğü ayarlamak için. Tek monitör ise kaldırınız.
        Dim bmp As Bitmap = New Bitmap( _
                            Screen.AllScreens.Sum(Function(s As Screen) s.Bounds.Width),
                            Screen.AllScreens.Max(Function(s As Screen) s.Bounds.Height))
        Dim gfx As Graphics = Graphics.FromImage(bmp)
        ' This line is modified to take everything based on the size of the bitmap
        gfx.CopyFromScreen(SystemInformation.VirtualScreen.X,
                           SystemInformation.VirtualScreen.Y,
                           0, 0, SystemInformation.VirtualScreen.Size)



        Panel1.BackgroundImage = bmp.Clone

        gfx.Dispose()
        bmp.Dispose()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        updateScreen.Start()
    End Sub

    Private Sub updateScreen_Tick(sender As Object, e As EventArgs) Handles updateScreen.Tick
        screenCapture()
    End Sub
End Class

İyi forumlar.
knka verdigin kodla 2. monitordan scrennshot yapior ancak

Monitorun Tümünden yapior benim problemim

actigim 2.Form 2.Monitorde acildiginda üzerinde Paint ile Boyadigim Kare icerigini Screenshot lamak istiorum


Kod:
gfx.CopyFromScreen(Kare.Location.X,

                           Kare.Location.Y,

                           0, 0, Kare.Size)

Bu sekilde 1. Monitorda sorunsuz oluyor
ama ikinci 2. Monitorda yaptigim Kare icerigini almior
1.Monitor dan alior bunu beceremedim

yardim icin saol
 
omertrans505
Efsane Üye
Katılım
17 Ara 2016
Mesajlar
3,221
Çözümler
63
Tepki puanı
361
Ödüller
13
Sosyal
9 HİZMET YILI
Pencere ekran görüntüsü yakalamak mi istiyorsun yoksa monitör ekran görüntüsü yakalamak mi istiyorsun.
 
Banlı Üye
Katılım
27 Şub 2021
Mesajlar
612
Çözümler
2
Tepki puanı
13
Ödüller
2
Yaş
27
5 HİZMET YILI
ben hiç öyle bişey denemedim capture olmasına rağmen
 
Uzman Üye
Katılım
13 Ara 2018
Mesajlar
192
Çözümler
1
Tepki puanı
22
Ödüller
8
Yaş
31
7 HİZMET YILI
Problem.png



sol taraf 2. Monitor oluyor ve sag taraf 1. Monitor

2. Monitor da Boyadigim Kare icerigi yerine kareyi Monitorun üstünde yani X , Y, 0 daymis gibi aliyor
 
Uzman Üye
Katılım
13 Ara 2018
Mesajlar
192
Çözümler
1
Tepki puanı
22
Ödüller
8
Yaş
31
7 HİZMET YILI
omertrans505
Efsane Üye
Katılım
17 Ara 2016
Mesajlar
3,221
Çözümler
63
Tepki puanı
361
Ödüller
13
Sosyal
9 HİZMET YILI
2. Monitor da olusturdugum Transparent Form un Paintle Kare nin icerigini yakalamak istiorum
x ve y yerine istediğin sayı değiştirebilirsin.
Kod:
'yukarda yeni oluştur
Dim BMP As New Drawing.Bitmap(640, 480)
Dim GFX As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(BMP)

'Fonksiyonu
GFX.CopyFromScreen(New Drawing.Point(x,y))
New Drawing.Point(0,0, BMP.Size)
PictureBox1.Image = BMP
Post automatically merged:

cop.png


Ne amaçlı yapmak istiyorsun? onuna göre yardımcı olabilirim. Pencere odaklanmadan ekran görüntüsü yakalamana ihtiyacın varsa
 
Son düzenleme:
Uzman Üye
Katılım
13 Ara 2018
Mesajlar
192
Çözümler
1
Tepki puanı
22
Ödüller
8
Yaş
31
7 HİZMET YILI
x ve y yerine istediğin sayı değiştirebilirsin.
Kod:
'yukarda yeni oluştur
Dim BMP As New Drawing.Bitmap(640, 480)
Dim GFX As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(BMP)

'Fonksiyonu
GFX.CopyFromScreen(New Drawing.Point(x,y))
New Drawing.Point(0,0, BMP.Size)
PictureBox1.Image = BMP
evet

saol kanka PointTo Screen tamamen unutmusum aklima getirdigin icin saol

Kod:
Dim PScreen As Point = Me.PointToScreen(kare.Location)


Gra.CopyFromScreen(PScreen.X, PScreen.Y, 0, 0, Bmp.Size)

Sorun Cözüldü Herkese Tesekkürler
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst