| |
VB.NET - FortgeschritteneProblem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 23.03.18 18:29 |
| Hallo!
Problem mit Ausgabe in PictureBox
Ich habe mit VB2010 ein Programm erstellt, mit dem ich Bilder im Bereich von -5 bis +5 Grad drehen kann.
Ausgabe des Bildes (W/H: 2816/1584) in eine PictureBox (W/H: 592/333, SizeMode: Zoom)
Sowohl die PictureBox als auch das zu drehende Bild und der Bildausschnitt haben ein Seitenverhältnis von 16/9.
Ausgabe: Grad W/H
0 2816/1584 1.77777…
-1 2720/1530 „
-2 2640/1485 „
-3 2576/1449 „
-4 2496/1404 „
-5 2432/1368 „
Mein Problem:
Bei den Gradzahlen 0, -2 und -5 wird die PictureBox nicht voll ausgefüllt
(Streifen von 1 Pixel rechts und unten)
Woran liegt das??? | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 23.03.18 20:15 |
| Hallo!
Ohne Kenntnis Deiner Rotationsroutine vermute ich:
Das liegt an der Rundung der Berechnungsergebnisse auf Ganzzahlen (=Pixel). | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 23.03.18 20:44 |
| Hallo,
die PictureBox rundet bei Zoom die Bildgröße auf ganze Zahlen. Dadurch kann sich eine Abweichung von 1 Pixel ergeben. Auch die BorderStyle-Einstellung kann das Bild verschieben.
Benutze besser StretchImage. Wenn die PictureBox das gleiche Seitenverhältnis hat wie das Originalbild, wird das Bild auch korrekt angezeigt. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 25.03.18 10:10 |
| Danke für Eure Antworten!
an der Rundung kann es nicht liegen...
siehe die Werte z.B. bei "-2"
Ich speichere das Bild als jpg-Datei -> Bild hat die gleichen Abmessungen (2640/1485)
Wenn ich das gespeicherte Bild wieder einlese -> wieder Streifen von 1 Pixel rechts und unten
Seitenverhältnis PictureBox: 592/333 - 1.77777...
Seitenverhältnis Bild: 2640/1485 - 1.77777...
-> Bild wird nicht korrekt angezeigt | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 25.03.18 12:48 |
| Hallo!
Dein Befund ist völlig korrekt.
Ein derartiges Seitenverhältnis führt zu einem Randstreifen.
Der Zoomfaktor ist ist in dem Fall übrigens ein periodischer
Dezimalbruch: 4,459459459459459 ....
Die Borderstyle-Eigenschaft der Picturebox spielt z.B. auch
eine Rolle bei der Darstellung.
Public Class frmTestPicBox
Dim pb As New PictureBox With
{.Parent = Me, .SizeMode = PictureBoxSizeMode.Zoom,
.Location = New Point(10, 10), .Size = New Drawing.Size(592, 333)}
Dim bmp As New Bitmap(2640, 1485)
Private Sub frmTestPicBox_Load(sender As Object,
e As EventArgs) Handles MyBase.Load
Me.Size = New Size(600, 400)
Me.BackColor = Color.Yellow
pb.BackColor = Color.Red
Using g As Graphics = Graphics.FromImage(bmp)
g.Clear(Color.Green)
End Using
pb.Image = bmp
End Sub
End Class Vielleicht so etwas ....
Public Class frmTestPicBox
Dim pb As New PictureBox With {.Parent = Me, .SizeMode = _
PictureBoxSizeMode.Zoom,
.Location = New Point(10, 10), .Size = New Drawing.Size(592, 333),
.BorderStyle = BorderStyle.None}
Dim bmp As New Bitmap(2640, 1485)
Private Sub frmTestPicBox_Load(sender As Object,
e As EventArgs) Handles MyBase.Load
Me.Size = New Size(600, 400)
Me.BackColor = Color.Yellow
pb.BackColor = Color.Red
Dim bmp_out As New Bitmap(pb.Width, pb.Height)
Using g As Graphics = System.Drawing.Graphics.FromImage(bmp_out)
g.DrawImage(bmp, New Rectangle(0, 0, bmp_out.Width, bmp_out.Height))
End Using
pb.Image = bmp_out
End Sub
End Class
Beitrag wurde zuletzt am 25.03.18 um 12:59:31 editiert. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 26.03.18 08:36 |
| Hallo!
Dank für Deine Mühe!!!
Ich verstehe nicht warum mal mit mal ohne Streifen...
Public Class frmTestPicBox
Dim pb As New PictureBox With
{.Parent = Me, .SizeMode = PictureBoxSizeMode.Zoom,
.Location = New Point(10, 10), .Size = New Drawing.Size(592, 333)}
' --> gleiche Seitenverhältnisse, aber...
' Dim bmp As New Bitmap(2640, 1485)
' 2640:592=4.4594594... 2640:1485=1.77777... --> mit Randstreifen
Dim bmp As New Bitmap(2720, 1530)
' 2720:592=4.5944594... 2720:1530=1.77777... --> o h n e Randstreifen
Private Sub frmTestPicBox_Load
(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Size = New Size(628, 392)
Me.BackColor = Color.Yellow
pb.BackColor = Color.Red
Using g As Graphics = Graphics.FromImage(bmp)
g.Clear(Color.Green)
End Using
pb.Image = bmp
End Sub
End Class | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 26.03.18 09:58 |
| Entschuldigung:
' 2720:592= !!! 4.594594...!!! 2720:1530=1.77777... --> o h n e Randstreifen | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 26.03.18 11:26 |
| Hallo!
Dazu kann ich nur folgende allgemeine Hinweise geben:
- Beim Vergrößern/Verkleinern von Bitmaps müssen alle Pixelpositionen
neu berechnet, interpoliert oder approximiert werden.
Dafür sind komplexe Algorithmen erforderlich.
Es entsteht ein neu aufgebautes Bild.
- Den Windows.Forms-Graphikroutinen liegen Bibliotheken (GDI+) aus dem
20.Jahrhundert zugrunde. Man kann die damit erzielten Resultate nur zur
Kenntnis nehmen. Zu verstehen gibt es nichts.
Pixel-Umrechnungen haben ohnehin notwendig immer eine Genauigkeitsgrenze.
Es kann auch passieren, daß eine Bild-Pixel-Reihe im Ziel-Bild abgeschnitten ist,
weil sie beim Interpolieren zu weit ausserhalb der vorgegebenen Fläche liegt. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 26.03.18 17:44 |
| Meine Rotationsroutine:
Private Sub Rotate()
Dim relPicIn, RelPic2 As Decimal
Dim inW_half, inH_half As Decimal
Dim rotW_half, rotH_half, rotL, rotT As Decimal
Dim theta As Double = HScrollBar1.Value * PI / 180.0
If theta < 0 Then theta *= -1 theta * -1
Dim sin_theta As Double = Sin(theta)
Dim cos_theta As Double = Cos(theta)
inW_half = CDec(bmp_In.Width/2)
inH_half = CDec(bmp_In.Height/2)
rotW_half = CDec(Math.Floor(inW_half*cos_theta+inH_half*sin_theta))
rotH_half = CDec(Math.Floor(inW_half*sin_theta+inH_half*cos_theta))
rotL = CDec(rotW_half-inW_half*cos_theta+inH_half*sin_theta)
rotT = CDec(rotH_half-(-inW_half*sin_theta+inH_half*cos_theta))
bmp_Out = New Bitmap(CInt(2*rotW_half), CInt(2*rotH_half))
Dim g As Drawing.Graphics = Graphics.FromImage(bmp_Out)
g.Clear(Color.LightGray)
Dim p_center As PointF
p_center.X = rotW_half
p_center.Y = rotH_half
Dim m As New Drawing.Drawing2D.Matrix
m.RotateAt(HScrollBar1.Value, p_center)
g.Transform = m
Dim source_rect As New Rectangle(0, 0, bmp_In.Width, bmp_In.Height)
Dim intX As Integer = CInt((bmp_Out.Width-bmp_In.Width)/2)
Dim intY As Integer = CInt((bmp_Out.Height-bmp_In.Height)/2)
Dim dest_rect As New Rectangle(intX,intY,bmp_In.Width,bmp_In.Height)
g.DrawImage(bmp_In, dest_rect, source_rect, GraphicsUnit.Pixel)
m.Dispose()
g.Dispose()
pb1.Image = bmp_Out
RelPic2 = rotT/(2*rotW_half-rotL)
relPicIn = CDec(bmp_In.Height/bmp_In.Width)
If relPicIn < 1 Then
If relPicIn = pb1.Height/pb1.Width Then
out_rect.Width = CInt(Math.Floor(2*(rotH_half-rotT+rotW_half*RelPic2)/( _
relPicIn+RelPic2)/16)*16)
Else
out_rect.Width = CInt(Math.Floor(2*(rotH_half-rotT+rotW_half*RelPic2)/( _
relPicIn+RelPic2)))
End |
out_rect.Height = CInt(Math.Floor(out_rect.Width*relPicIn))
Else
out_rect.Height = CInt((2*(rotW_half-rotL+rotH_half*RelPic2)/( _
bmp_In.Width/bmp_In.Height+RelPic2)))
out_rect.Width = CInt((out_rect.Height/relPicIn))
End If
out_rect.X = CInt(rotW_half-out_rect.Width/2)
out_rect.y = CInt(rotH_half-out_rect.Height/2)
If bmp_Out.Height/bmp_Out.Width > pb1.Height/pb1.Width Then
decZoom = CDec(bmp_Out.Height/pb1.Height)
Else
decZoom = CDec(bmp_Out.Width/pb1.Width)
End If
If pb1.SizeMode = PictureBoxSizeMode.CenterImage Then decZoom = 1
Dim ImagePart As Bitmap = New Bitmap(out_rect.Width, out_rect.Height)
g = Graphics.FromImage(ImagePart)
Dim TargetRect As Rectangle = New Rectangle(0, 0, out_rect.Width, _
out_rect.Height)
g.DrawImage(bmp_Out, TargetRect, out_rect, GraphicsUnit.Pixel)
g.Dispose
g = Nothing
pb2.Image = ImagePart
If chbVollbild.Checked = True Then pb1.Image = ImagePart
End Sub | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 26.03.18 18:32 |
| Im Code der Routine wird viel berechnet und danach gerundet.
Probier mal diese Variante (Transformationsmethode der Drawing2D.Matrix
bei Verarbeitung des Zoomfaktors):
http://www.vbarchiv.net/tipps/details.php?id=1871
Beitrag wurde zuletzt am 26.03.18 um 18:33:11 editiert. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 27.03.18 09:22 |
| Hab die Variante „Bilder formatfüllend drehen und zoomen“ getestet.
Hier wird das Bild in einem Rechteck in voller Größe gedreht angezeigt. Aber auch hier bei manchen Winkeln Streifen von 1 Pixel an der rechten Seite.
Bei meiner Version wird aus dem gedrehten Bild nur ein Rechteck mit dem gleichen Seitenverhältnis ohne die Randbereiche ausgeschnitten und angezeigt. Daher muss mehr berechnet werden! | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 27.03.18 09:33 |
| Hallo!
Erstelle zuerst den gewünschten Bildausschnitt mit Graphics.DrawImage,
und rotiere im zweiten Schritt.
Damit ersparst Du Dir die Berechnungen.
Alternativ kannst Du es mit WPF versuchen.
Hinter diesen Controls steht ein modernes Graphiksystem.
Sie können auch in WinForms-Projekten eingesetzt werden. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 27.03.18 16:29 |
| Hallo,
ich habe dieses Beispiel ausprobiert und kann den Streifen rechts und unten bestätigen. Er tritt nur bei bestimmten Bildgrößen auf. Die Ursache ist mir unbekannt. Das interne, gezoomte Bild scheint immer die richtige Größe zu haben. Wenn ich den Originalcode der PictureBox nachbilde (mit DrawImage), tritt in keinem Fall ein Streifen auf.
Beste Lösung:
Erstelle ein eigenes Steuerelement.
Mit dieser PictureBox tritt kein Randstreifen auf.
Class MeinePictureBox
Inherits PictureBox
Protected Overrides Sub OnPaint(pe As PaintEventArgs)
If Image IsNot Nothing AndAlso SizeMode = PictureBoxSizeMode.Zoom Then
pe.Graphics.DrawImage(Image, ImageRectangle)
Else
MyBase.OnPaint(pe)
End If
End Sub
Private Function ImageRectangle() As Rectangle
Dim cr = ClientRectangle
If Image IsNot Nothing Then
Dim ims = Image.Size
Dim ratio = Math.Min(cr.Width / ims.Width, cr.Height / ims.Height)
cr.Width = CInt(ims.Width * ratio)
cr.Height = CInt(ims.Height * ratio)
cr.X = (Me.Width - cr.Width) \ 2
cr.Y = (Me.Height - cr.Height) \ 2
End If
Return cr
End Function
End Class Du kannst das drehen des Bildes auch direkt mit in diese Box einbauen.
Zum Beispiel so:
Protected Overrides Sub OnPaint(pe As PaintEventArgs)
If Image IsNot Nothing AndAlso SizeMode = PictureBoxSizeMode.Zoom Then
Dim g = pe.Graphics
'Verschieben zum Mittelpunkt
g.TranslateTransform(Me.Width / 2.0F, Me.Height / 2.0F)
'Drehen um 5 Grad
g.RotateTransform(5.0F)
'Grafik vergrößern, damit keine Ränder sichtbar sind
'(der genaue Faktor muss berechnet werden!)
g.ScaleTransform(1.2F, 1.2F)
'Zurückverschieben
g.TranslateTransform(-Me.Width / 2.0F, -Me.Height / 2.0F)
'Qualität verbessern
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
'Bild zeichnen
g.DrawImage(Image, ImageRectangle)
Else
MyBase.OnPaint(pe) 'internes zeichnen
End If
End Sub | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 28.03.18 12:03 |
| Vielen, vielen, vielen Dank !!!
Ich habe [Class MeinePictureBox] eingefügt --> ich verstehe nicht warum… aber funktioniert einwandfrei!!!
Aber: Paint-Ereignis funktioniert nicht mehr. Wie kann ich auf das Paint-Ereignis zugreifen?
Private Sub myPb1_Paint _
(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles pb1.Paint
If out_rect.Width = 0 Then Exit Sub ' nach Load -> Exit Sub
Dim pbRectOut As Rectangle
'*** Ausgabe-Rechteck
' **************************************************************
pbRectOut.X = CInt((myPb1.Width - out_rect.Width / decZoom) / 2)
pbRectOut.Y = CInt((myPb1.Height - out_rect.Height / decZoom) / 2
pbRectOut.Width = CInt(out_rect.Width / decZoom
pbRectOut.Height = CInt(out_rect.Height / decZoom
If chbVollbild.Checked = False And HScrollBar1.Value <> 0 Then
e.Graphics.DrawRectangle(Pens.White, pbRectOut)
End If
'*** Diagonalen
' ********************************************************************
If chbDiagonalen.Checked = True And HScrollBar1.Value <> 0 And _
chbVollbild.Checked = False Then
Dim PenDiag As Pen = New Pen(Color.White)
PenDiag.DashStyle = DashStyle.DashDotDot
Dim pntD(3) As Point
pntD(0).X = CInt((myPb1.Width - bmp_In.Width / decZoom) / 2)
pntD(0).Y = CInt((myPb1.Height - bmp_In.Height / decZoom) / 2)
pntD(1).X = CInt(pntD(0).X + bmp_In.Width / decZoom)
pntD(1).Y = pntD(0).Y
pntD(2).X = pntD(0).X
pntD(2).Y = CInt(pntD(0).Y + bmp_In.Height / decZoom)
pntD(3).X = pntD(1).X
pntD(3).Y = pntD(2).Y
e.Graphics.DrawLine(PenDiag, pntD(0), pntD(3))
e.Graphics.DrawLine(PenDiag, pntD(1), pntD(2))
e.Graphics.DrawLine(PenDiag, pntD(0), pntD(1))
e.Graphics.DrawLine(PenDiag, pntD(1), pntD(3))
e.Graphics.DrawLine(PenDiag, pntD(3), pntD(2))
e.Graphics.DrawLine(PenDiag, pntD(2), pntD(0))
End If
'*** Raster
' ************************************************************************
If chbRaster.Checked = True Then
. . .
End If
End Sub | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 28.03.18 15:17 |
| Bei meinem Beispiel wird das Paint-Event nur ausgelöst, wenn die SizeMode der Picturebox nicht Zoom ist.
So wird das Paint-Event immer ausgelöst, hat aber zur Folge, dass das Bild der Image-Eigenschaft 2x gezeichnet wird:
Protected Overrides Sub OnPaint(pe As PaintEventArgs)
If Image IsNot Nothing AndAlso SizeMode = PictureBoxSizeMode.Zoom Then
pe.Graphics.DrawImage(Image, ImageRectangle)
End If
MyBase.OnPaint(pe)
End Sub Bessere Lösung:
Shadows Event Paint As PaintEventHandler
Protected Overrides Sub OnPaint(pe As PaintEventArgs)
If Image IsNot Nothing AndAlso SizeMode = PictureBoxSizeMode.Zoom Then
pe.Graphics.DrawImage(Image, ImageRectangle)
Else
MyBase.OnPaint(pe)
End If
RaiseEvent Paint(Me, pe)
End Sub So klappts auch mit dem Paint-Event.
Beitrag wurde zuletzt am 28.03.18 um 15:22:43 editiert. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Dikn | Datum: 28.03.18 18:01 |
| nochmals vielen Dank für Deine Bemühungen!!!
jetzt funktioniert alles wunderbar
Gruß
DiKn | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 04.04.18 07:06 |
| Ursache gefunden!
Gerade hatte ich eine Idee, was wohl die Ursache für den 1 Pixel Rand sein könnte. Ich habe nun diese Idee überprüft und die Ursache gefunden.
Wie ich schon vermutet hatte, ist es ein Rundungsfehler. Bei der Nachbildung der Picturebox in VB tritt dieser Fehler aber nicht auf.
Die Ursache liegt an C#!
Bei der Konvertierung von Single in Integer rundet VB (aus 23,7 wird 24), aber C# rundet nicht, es schneidet nur die Nachkommastellen ab (aus 23,7 wird 23)!
Da die Picturebox in C# und nicht in VB geschrieben wurde, ergibt sich daraus dieser Pixelfehler. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 04.04.18 13:37 |
| Meines Wissens beruhen die klassischen Windows.Forms-Controls
auf uralten Windows-Controls des letzten Jahrhunderts.
Mit C# haben sie deshalb nichts zu tun.
Es liegt vermutlich ein Algorithmus-bedingtes Phänomen vor,
das unter bestimmten Bedingungen die pixelgenaue Erstellung
vergrößerter oder verkleinerter Bitmaps verhindert.
Es scheint so, daß in solchen Fällen entweder die Größe des
Resultat-Bildes abgerundet oder das Bild am Rand abgeschnitten
wird (Graphics-Klasse).
Mit einer einfachen Rundungsoperation läßt sich das nicht
begründen. Im übrigen arbeiten Framework-Klassen intern nicht
sprachspezifisch. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 04.04.18 20:18 |
| Hallo Manfred X,
da liegst du leider falsch. Schau dir den Originalcode der Picturebox an, besonders die Funktion "ImageRectangleFromSizeMode". Wenn ich diese Funktion unter C# ausführe kommt es bei bestimmten Seitenverhältnissen zu dem von Dikn beschriebenen 1 Pixel Rand. Also in dem Beispiel von Dikn, bei einer Picturebox-Größe von 592x333, bekomme ich dann eine Größe von 591x332. Die Picturebox benutzt DrawImage mit diesem Rechteck.
Führe ich die gleiche Funktion (umgeschreiben) in VB aus, so erhalte ich immer die richtige Größe von 592x333. Auch ein Auslesen des internen Rechtecks über Reflektion ergibt die gleiche Abweichung.
VB:
Dim s As Single = 23.7F
Dim i As Integer = CInt(s) ' = 24 C#:
float s = 23.7f;
int i = (int)s; // = 23 Du kannst es selbst ausprobieren! | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 04.04.18 20:51 |
| Hallo!
Ich hab mal reingeschaut.
Worauf Du Dich beziehst, ist nicht der "Originalcode der Picturebox",
sondern nur der verwaltete Code, über den das native Control "gefahren"
wird.
Selbstverständlich muß dieser Code die Property-Werte in Net so zurückliefern,
wie das native Control die Bilder z.B. beim Zoomen darstellt.
Die Codezeilen auf die Du dich beziehst sind - soweit ich gesehen habe -
deshalb nur die Folge, aber nicht die Ursache des Problems. Das liegt in der Box
selbst.
Beitrag wurde zuletzt am 04.04.18 um 21:01:28 editiert. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 04.04.18 21:10 |
| Hallo,
welches native Control soll denn die PictureBox sein? Sie erbt, wie jedes andere Steuerelement von Control! Und Control ist auch kein natives Steuerelement.
Die PictureBox zeichnet die Bilder mit DrawImage! | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 04.04.18 21:40 |
| (Nahezu) Alle Graphik-Klassen in Windows.Forms erben von der Klasse
System.MarshalByRefObject und das bedeutet, die intern verwendeten
Bibliotheken sind kein Teil des Net-Framework.
(Picturebox, Graphics, Matrix, Image/Bitmap, ...)
Aus diesem Grund müssen z.B. alle GDI-Ressourcen im Code "Disposed"
werden. Sie laufen nicht im verwalteten Speicher, die GDI-Handles werden
nicht automatisch vom Framework (Garbage Collector) freigegeben usw.
Auch Formulare, die häufig in der Anwendung Neu instanziiert werden,
sollten die enthaltenen Controls im Close-Eventhandler Disposen.
Windows umfaßte - von Anfang an ?? - grundlegende Controls, die nicht
modifiziert worden sind und die bis heute (und in Zukunft) in Windows.Forms
genutzt werden.
https://stackoverflow.com/questions/16183195/are-basic-net-windows-forms-controls-native-win32-controls
Man kann das WPF-Control "Image" einfach in Winforms-Anwendungen hosten
(ElementHost) und hat dann Zugriff auf moderneres "Material".
Beitrag wurde zuletzt am 04.04.18 um 21:53:17 editiert. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 04.04.18 22:52 |
| Das hat aber gar nichts damit zu tun, dass die interne Funktion "ImageRectangleFromSizeMode", bei bestimmten Seitenverhältnissen, ein Rechteck zurück gibt was 1 Pixel kleiner ist, weil eben C# generell abrundet. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 04.04.18 23:02 |
| Was soll die Routine zurückgeben?
Einen aufgerundeten Wert, der nicht kompatibel ist
mit dem Ergebnis der zugrundeliegenden Methode?
Ich denke, Deine Recherchen sind nutzlos, weil wir nichts
darüber wissen, wie das Control intern arbeitet.
Im Übrigen: Falls es möglich wäre, das Problem im Net-Code
zu beheben, hätten die Net-Entwickler das längst erledigt.
Meine Vermutung: Es ist eine Sicherheitslösung. Bei Aufrundung
wird nämlich das resultierende Bild (GDI+) manchmal zu groß und
deshalb vom Picturebox-Control am Rand des Bildes eine Pixelreihe
abgeschnitten.
Beitrag wurde zuletzt am 04.04.18 um 23:06:53 editiert. | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Kuno60 | Datum: 04.04.18 23:20 |
| Du hast keine Ahnung von C# und verstehst den .NET-Framework-Sourcecode nicht... | |
Re: Problem mit Ausgabe in PictureBox | | | Autor: Manfred X | Datum: 04.04.18 23:33 |
| Dann ist es ja gut, daß wir hier jemanden haben,
der so enorm kompetent ist wie Du. | |
| 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 |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats 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
|