2016-04-06 1 views
0

Следующий код происходит внутри System.Windows.Forms.PaintEventHandler о наличии System.Windows.Forms.PictureBox под .NET Framework Compact (е из PaintEventArgs типа):Почему эта предположительно пунктирная линия, показанная как прочная в Windows Forms .NET Compact Framework?

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

Линия рендеринга твердого вещества несмотря на то, что я установил DashStyle Dashed. Длина и цвет прекрасно.

Любые идеи?

+0

Должен работать так, как предполагается. Интересно, почему вы объявляете и изменяете Pen за пределами используемого предложения. Это выглядит неправильно для меня .. 'using (Pen penDashed = new Pen (Color.Red, 3)) {penDashed.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; e.Graphics.DrawLine (penDashed, 30, 30, 100, 30);} 'будет так, как я пишу это. – TaW

+0

Причина, по которой он объявлен как таковой, заключается в том, что я следую стилю, уже присутствующему в унаследованном коде. Это на самом деле рисование прямоугольников, которые являются прочными (используя Graphics.DrawPolygon()). Я пытаюсь добавить пунктирный прямоугольник в микс. Пунктирный прямоугольник был рендерингом как сплошной, поэтому я попробовал что-то более простое, как линия, и получил тот же результат. – GrantA

+1

Ширина пера заставляет тире касаться друг друга. Если вы нарисуете линию с шириной пера 1, снова появится черточка. Я не знаю, есть ли простой способ получить желаемый результат. –

ответ

3

Это на самом деле documented (для Windows API, не специально для компактных рамок) here:

Windows CE поддерживает широкие ручки и пунктирная ручки, но не поддержки пунктир ручки, внутри рамы ручек , геометрические ручки, стили стопки пера, или ручки, которые являются широкими и пунктирными..

+0

Спасибо. (И возвращая плохие воспоминания о работе с венгерской нотацией. :)) Конечно же, уменьшив ширину до 1, о чем упоминается в документации, к которой вы привязаны как ширина пера по умолчанию для CE, снова появляются тире. Было бы неплохо, если бы MS включила это где-то легко доступное в документации .NET. – GrantA