| |

VB.NET - Ein- und UmsteigerBitmap über Byte-Feld adressieren | |  | Autor: Progger | Datum: 22.05.08 21:28 |
| Hallo
Hab folgendes Prob:
ich hab eine picturebox
nun soll bei jedem click ein pixel hinzugefügt werden
erst hab ich es über setpixel und den krempel versucht nur leider konnte ich dann immer die größe des bildes nicht ändern....
also hab ich es mit einem VB buch versucht.
da hies es:"
public sub picturebox1_mousmove(...)handles picturebox1.mousmove
if pint = true 'kleiner add von mir damit nur gezeichnet wird wenn maus
' 'gedrückt ist :xcool:
dim bm as bitmap
dim xmax ,ymax as integer
dim bytes_per_line , bytes_total as integer
dim bmdata as drawing.imaging.bitmapdata
dim startindex , startindex_line as integer
'neue bitmap in der größe der picture box
xmax = picturebox1.width
ymax = picturebox1.height
bm = new bitmap(xmax , ymax)
'speicher der gesamten bimap blockieren
bmdata = bm.lockbites( new rectangle( _
0,0,xmax,ymax),imaging......readwrite,imaging.....format24bpprgb)
'speicher berechnen
bytes_per_line = bmdata.stride
bytes_total = bytes_per_line * bmdata.height
'array reservieren , bitmap dorthin copy
dim byt(bytes_total -1 ) as byte
runtime.interopservices.marshal.copy(bmdata.scan0, byt , 0 ,bytes_total)
'bitmap muster...
''''normalerweise würde hier ein muster kommen aber ich habs verändert 'damit
' ein punkt kommt wo die maus ist
dim pos as integer= (picturebox1.pointtoclient(control.mausposition).x * 3) + ( _
picturebox1.pointtoclient(control.mausposition).y * 3 * bytes_per_line)
byt(pos) = 0 'Blau
byt(pos + 1 ) = 0 'Grün
byt(pos + 2 ) = 0 'Rot
'byte array zurück in den speicher laden
runtime.interopservices.marshal.copy(byt, 0 , bmdata.scan0 ,bytes_total)
'Speicher freigeben
bm.unlockbites(bmdata)
'bitmap anzeigen
if not isnothing(picturebox1.image) then
picturebox1.image.dispose()
end if
picturebox1.image = bm
end if
end sub
'added bei mir zu pint
public sub picturebox1_mousdown(...)handles picturebox1.mausdown
pint=true
end sub
public sub picturebox1_mouseup(...)handles picturebox1.mouseup
pint=false
end sub soo das klappt wunderbar
NUR DAS PROB IS DAS ES NUR EINMAL KLAPPT
!!!!!!
was sol ich tun???
     |  |
 Bitmap über Byte-Feld adressieren | 895 | Progger | 22.05.08 21:28 |
 | 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 |
  |
|
sevZIP40 Pro DLL 
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|