vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 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

VB.NET - Ein- und Umsteiger
Bitmap ü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???
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bitmap über Byte-Feld adressieren895Progger22.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

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