vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Umwandlung in schwarz-weiss 
Autor: Blackbox
Datum: 27.04.16 18:48

Hallo jopeku,

Ein Modul. Den nachfolgenden Code in ein Modul einfügen und dann die öffentliche Funktion mit Parameter der Picturebox aufrufen.

Private Declare Function CreateCompatibleBitmap Lib "gdi32.dll" ( _
     ByVal hDC As Long, _
     ByVal nWidth As Long, _
     ByVal nHeight As Long) As Long
 
Private Declare Function CreateCompatibleDC Lib "gdi32.dll" ( _
     ByVal hDC As Long) As Long
 
Private Declare Function SelectObject Lib "gdi32.dll" ( _
     ByVal hDC As Long, _
     ByVal hObject As Long) As Long
 
Private Declare Function DeleteObject Lib "gdi32.dll" ( _
     ByVal hObject As Long) As Long
 
Private Declare Function DeleteDC Lib "gdi32.dll" ( _
     ByVal hDC As Long) As Long
 
Private Declare Function SetPixel Lib "gdi32.dll" ( _
     ByVal hDC As Long, _
     ByVal x As Long, _
     ByVal y As Long, _
     ByVal crColor As Long) As Long
 
Private Declare Function GetPixel Lib "gdi32.dll" ( _
     ByVal hDC As Long, _
     ByVal x As Long, _
     ByVal y As Long) As Long
 
Private Declare Function BitBlt Lib "gdi32.dll" ( _
     ByVal hDestDC As Long, _
     ByVal x As Long, _
     ByVal y As Long, _
     ByVal nWidth As Long, _
     ByVal nHeight As Long, _
     ByVal hSrcDC As Long, _
     ByVal xSrc As Long, _
     ByVal ySrc As Long, _
     ByVal dwRop As Long) As Long
 
Private Const SRCCOPY As Long = &HCC0020
 
 
Public Function Color2BlackWhite(ByRef oPic As PictureBox) As Long
    Dim hmemDC As Long
    Dim hBM As Long
    Dim x As Long, y As Long
    Dim Color As Long, Rot As Long, Gruen As Long, Blau As Long, Grau As Long
    Dim hDC As Long, w As Long, h As Long
 
    hDC = oPic.hDC
    w = oPic.ScaleWidth
    h = oPic.ScaleHeight
 
    'Gerätekontext im Speicher erstellen
    hmemDC = CreateCompatibleDC(hDC)
    If hmemDC = 0 Then
        Color2BlackWhite = -10
        Exit Function
    End If
    hBM = CreateCompatibleBitmap(hDC, w, h)
    If hBM = 0 Then
        DeleteDC hmemDC
        Color2BlackWhite = -20
        Exit Function
    End If
    SelectObject hmemDC, hBM
 
    'Bild pixelweise ins Memory kopieren und modifizieren
    For y = 0 To h
        For x = 0 To w
            Color = GetPixel(hDC, x, y)
            Rot = (Color And vbRed)
            Gruen = (Color And vbGreen) \ &H100
            Blau = (Color And vbBlue) \ &H10000
            Grau = (Rot * 77 + Gruen * 150 + Blau * 28) / 255
            If Grau > 128 Then
                SetPixel hmemDC, x, y, vbWhite
            End If
        Next
    Next
 
    'Ursprüngliches Bild löschen
    Set oPic.Picture = Nothing
    oPic.AutoRedraw = False
 
    'Mit einem Rutsch vom Speicher ins Bild
    BitBlt oPic.hDC, 0, 0, w, h, hmemDC, 0, 0, SRCCOPY
 
    'GDI Speicher klären
    DeleteObject hBM
    DeleteDC hmemDC
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Umwandlung in schwarz-weiss1.849jopeku25.04.16 18:44
Re: Umwandlung in schwarz-weiss1.107Manfred X25.04.16 19:20
Re: Umwandlung in schwarz-weiss1.040jopeku25.04.16 21:03
Re: Umwandlung in schwarz-weiss1.058Manfred X25.04.16 21:22
Re: Umwandlung in schwarz-weiss1.049Zardoz25.04.16 21:28
Re: Umwandlung in schwarz-weiss1.003Manfred X25.04.16 21:45
Re: Umwandlung in schwarz-weiss1.011Zardoz25.04.16 21:55
Re: Umwandlung in schwarz-weiss1.030Manfred X25.04.16 22:09
Re: Umwandlung in schwarz-weiss1.186jopeku26.04.16 07:58
Re: Umwandlung in schwarz-weiss1.247Blackbox27.04.16 18:48
Re: Umwandlung in schwarz-weiss1.114jopeku27.04.16 20:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel