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-2025
 
zurück

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

Visual-Basic Einsteiger
Re: Grafikbearbeitung 
Autor: illuminator
Datum: 27.01.03 09:14

Hi,

ich glaube ich hab das was für dich( um ein vielfaches schneller als wiederholtes SetPixel):
 
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, _
  ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, _
ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal _
hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
 
Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type
 
Public SrcArray() As Byte
 
'Aus einem Bitmap-Handle einen Byte-Array gewinnen
Private Sub CreateArrayFromHBMP(ByVal theBMP As Long, ByRef theArray() As Byte)
    Dim hbmp As BITMAP
    GetObject theBMP, Len(hbmp), hbmp
    ReDim theArray(0 To (hbmp.bmBitsPixel / 8) - 1, hbmp.bmWidth - 1, _
      hbmp.bmHeight - 1) As Byte
    GetBitmapBits theBMP, hbmp.bmWidth * hbmp.bmHeight * (hbmp.bmBitsPixel / _
    8), theArray(0, 0, 0)
 
End Sub
 
'Daten aus einem ByteArray per bitmap-handle in ein Bitmap übertragen
Private Sub CreateHBMPfromArray(ByVal theBMP As Long, ByRef theArray() As Byte)
    Dim hbmp As BITMAP
    GetObject theBMP, Len(hbmp), hbmp
    SetBitmapBits theBMP, hbmp.bmWidth * hbmp.bmHeight * (hbmp.bmBitsPixel / _
      8), theArray(0, 0, 0)
End Sub
 
Private Sub Form_Click()
    'Bitmap in PictureBox laden
    Picture1.Picture = LoadPicture(App.Path & "\test.bmp")
    'Laden einer PictureBox in einen Array
    CreateArrayFromHBMP Picture1.Image.Handle, SrcArray
 
    '... Den Array bearbeiten z.B. Blurfiltern
 
    'Den Array zurück in die Picture-Box schreiben
    CreateHBMPfromArray Me.picTarget.Image.Handle, SrcArray
End Sub
Was deine Filter angeht - ich habe mehrere Algorithmen auf Lager (was sie taugen müssen andere beurteilen ) - allerdings in C++ ( wegen der Geschwindigkeit) VB ist für sowas nämlich wirklich zu langsam. Gehen tuts natürlich trotzdem. Poste mal ins DirectX-Forum was du brauchst und ich übertrags dann nach VB.

Bye

illuminator
(Programmers don't die, they GOSUB without RETURN...)

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Grafikbearbeitung517TerraProject27.01.03 08:31
Re: Grafikbearbeitung313Elwood27.01.03 08:43
Re: Grafikbearbeitung419illuminator27.01.03 09:14
Re: Grafikbearbeitung340TerraProject27.01.03 18:49
Re: Grafikbearbeitung291illuminator27.01.03 19:39

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-2025 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