2016-04-06 6 views
0

Der folgende Code tritt innerhalb der System.Windows.Forms.PaintEventHandler eines System.Windows.Forms.PictureBox unter dem .NET Compact Framework (e ist vom Typ PaintEventArgs):Warum wird diese gestrichelte Linie in Windows Forms .NET Compact Framework als solide angezeigt?

var penDashed = new Pen(Color.Red, 3); 
penDashed.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; 
using (penDashed) 
{ 
    e.Graphics.DrawLine(penDashed, 30, 30, 100, 30); 
} 

Die Linie Feststoff wird Rendering trotz der Tatsache, dass ich den DashStyle auf Gestrichelt gesetzt habe. Die Länge und Farbe sind gut.

Irgendwelche Ideen?

+0

Es sollte funktionieren, wie es soll. Ich frage mich, warum Sie den Stift jedoch außerhalb der using-Klausel deklarieren und ändern. Das sieht für mich falsch aus .. 'mit (Pen penDashed = neuer Stift (Color.Red, 3)) {penDashed.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; e.Graphics.DrawLine (penDashed, 30, 30, 100, 30);} würde so geschrieben werden .. – TaW

+0

Der Grund dafür ist, dass ich dem Stil folge, der bereits im geerbten Code vorhanden ist. Es zeichnet tatsächlich Rechtecke, die fest sind (mit Graphics.DrawPolygon()). Ich versuche, der Mischung ein gestricheltes Rechteck hinzuzufügen. Das gestrichelte Rechteck wurde so solide dargestellt, dass ich etwas Einfacheres wie eine Linie versuchte und das gleiche Ergebnis bekam. – GrantA

+1

Die Breite des Stiftes bewirkt, dass sich die Striche berühren. Wenn Sie eine Linie mit einer Stiftbreite von 1 zeichnen, wird der Strich wieder angezeigt. Ich weiß nicht, ob es einen einfachen Weg gibt, das gewünschte Ergebnis zu erzielen. –

Antwort

3

Das eigentlich documented ist (für die Windows-API, die nicht speziell für den kompakten Rahmen) here:

Windows CE unterstützt breite Stifte und gestrichelte Stifte, aber nicht Unterstützung Stifte punktiert, innerhalb des Rahmens Stifte , geometrische Stifte, Stiftendkappenstile, oder Stifte, die sowohl breit als auch gestrichelt sind.

+0

Danke dafür. (Und schlechte Erinnerungen an die Arbeit mit ungarischer Notation zurückbringen. :)) Wenn Sie die Breite auf 1 setzen, was in der Dokumentation erwähnt wird, mit der Sie als Standard-Stiftbreite für CE verbunden sind, erscheinen die Bindestriche wieder. Es wäre schön für MS gewesen, dies irgendwo leicht zugänglich in der .NET-Dokumentation enthalten. – GrantA

Verwandte Themen