VB.NET-Tipp 0087: Gezielter Screenshot
von Spatzenkanonier
Beschreibung
Ausgehend von Bildschirmfoto (Screenshot) erstellen [Tipp 60] wird hier eine kleine, aber praktische Anwendung zur Erstellung gezielter Screenshots vorgestellt. Der Bild-Ausschnitt wird über eine Form gewählt, dessen Clientbereich mittels TransparencyKey durchsichtig gemacht ist.Die Bildschirmausschnitte werden in einem frei wählbaren Format in einem Unterordner von "Eigene Bilder" abgelegt.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2005 ' Option Strict: An ' ' Referenzen: ' - System ' - System.Data ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' ' Imports: ' - Microsoft.VisualBasic ' - Microsoft.VisualBasic.ControlChars ' - System ' - System.Collections ' - System.Collections.Generic ' - System.Data ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' ' ############################################################################## ' ################################ frmMain.vb ################################## ' ############################################################################## Imports Microsoft.VisualBasic.ControlChars Imports System.Drawing.Imaging Imports System.io Imports System.Collections.Generic Imports System.Environment Public Class frmMain Private _ShotDir As String Private _ShotFile As String = "ScreenShot" Private _ShotTemplate As String Private Sub frmMain_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load ' Alle möglichen ImageFormate in die Combobox eintragen Dim Formats As ImageFormat() = New ImageFormat() { _ ImageFormat.Bmp, ImageFormat.Emf, ImageFormat.Exif, _ ImageFormat.Gif, ImageFormat.Icon, ImageFormat.Jpeg, _ ImageFormat.Png, ImageFormat.Tiff, ImageFormat.Wmf} Me.cmbSaveAs.ComboBox.DataSource = Formats ' Voreinstellung Me.cmbSaveAs.SelectedItem = ImageFormat.Png ' Gegebenenfalls Unterordner in "Eigene Bilder" anlegen _ShotDir = Path.Combine(GetFolderPath(SpecialFolder.MyPictures), _ "ScreenShots") If Not Directory.Exists(_ShotDir) Then _ Directory.CreateDirectory(_ShotDir) _ShotTemplate = Path.Combine(_ShotDir, _ShotFile) End Sub Private Sub btSave_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles btSave.Click ' Klick-Feedback geben My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk) ' Erforderlichen Nummern-Anhang für die Datei herausfinden Dim SearchPattern As String = _ String.Concat(_ShotFile, "??.", cmbSaveAs.SelectedItem) Dim Files As String() = Directory.GetFiles(_ShotDir, SearchPattern) Dim Numb As Integer = 0 If Files.Length > 0 Then Array.Sort(Files) Numb = Integer.Parse(Files(Files.Length - 1).Substring( _ _ShotTemplate.Length, 2)) + 1 End If 'Foto-Position bestimmen Dim Rct As Rectangle With Me.PhotoPanel ' Umrechnung auf Bildschirmkoordinaten Rct = .RectangleToScreen(.ClientRectangle) End With ' Knipsen und speichern Using Bmp As Bitmap = New Bitmap(Rct.Width, Rct.Height), _ g As Graphics = Graphics.FromImage(Bmp) g.CopyFromScreen(Rct.Location, Point.Empty, Rct.Size) Dim Format As ImageFormat = DirectCast(cmbSaveAs.SelectedItem, _ ImageFormat) Bmp.Save(String.Concat(_ShotTemplate, Numb.ToString("00"), ".", _ Format), Format) End Using End Sub Private Sub btOpenShotFolder_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles btOpenShotFolder.Click ' "Eigene Bilder\ScreenShots" im Explorer öffnen Process.Start(_ShotDir) End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Bernd am 19.07.2009 um 17:54
Wiso ist das Panel nach dem Starten durchsichtig ?
wenn ich das Project Nachbaue ist es bei mir nicht transparent.
danke