Sehr geehrte Damen und Herrn,
ich bin Student an der Uni Bochum Fachbereich Elektrotechnik und ich heiße Fernando.
Ich mache meine Projektarbeit in Visual Basic und ich muss viel damit arbeiten.
Deswegen habe ich einige Verständnisfragen dazu.
Wer kann mir dabei helfen und meine einige Fragen in Visual Basic beantworten?
Wenn einer mir dabei helfen kann, bin ich sehr dankbar dafür.
Meine e-Mail Adresse ist:
fernando.fransis@yahoo.de
Mit freundlichen Grüßen
Fernando Fransis
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Das Problem ist ganz einfach. Zitat aus der MSDN Library:
The pixel must be within the boundaries of the current clipping region.
Das Pixel darf also nicht verdeckt werden, wenn man es auslesen möchte.
Da ich mich mit Grafik nicht auskenne, kann ich Dir nur raten, das Bild vor dem Berechnen vollständig anzuzeigen. Nach dem Berechnen kannst Du es ja wieder in seine Grenzen verweisen.
Hier mal eine leicht abgewandelte Sub:
Private Sub Picture2_Erzeugen_Click()
' Schwellwert auslesen
Dim Anzahl As Long
Anzahl = CLng(Txt_Anzahl.Text)
Dim Breite1 As Long
Dim Höhe1 As Long
Dim lCol1 As Long
Dim CV1 As ColorValues
Breite1 = Picture1.Picture.Width \ Screen.TwipsPerPixelX
Höhe1 = Picture1.Picture.Height \ Screen.TwipsPerPixelX
' Picture2 auf die richtige Größe bringen
With Picture2
.BorderStyle = 0
.ScaleMode = ScaleModeConstants.vbPixels
.Width = Picture1.Width
.Height = Picture1.Height
.AutoRedraw = True
.BackColor = vbWhite
Call .Cls
Set .Picture = Picture1.Picture
.Visible = False
End With
For iY1 = 0 To Höhe1 - 1
For iX1 = 0 To Breite1 - 1
' Farbwert auslesen und aufbrechen
lCol1 = GetPixel(Picture2.hdc, iX1, iY1)
CV1 = fBreakColors(lCol1)
If CV1.iRed CV1.iRed = 0
Else
CV1.iRed = 255
End If
If CV1.iGreen CV1.iGreen = 0
Else
CV1.iGreen = 255
End If
If CV1.iBlue CV1.iBlue = 0
Else
CV1.iBlue = 255
End If
' Pixel setzen
SetPixel Picture2.hdc, iX1, iY1, RGB(CV1.iRed, CV1.iGreen, CV1.iBlue)
Next iX1
Next iY1
With Picture2
.Visible = True
Call .Refresh
End With
End Sub