(RichTextBox に似たコントロールで) TextDecoration を使用して波状の下線を作成したいと考えています。
私は次のことをしました:
private static Pen CreateErrorPen() {
var geometry = new StreamGeometry();
using (var context = geometry.Open()) {
context.BeginFigure(new Point(0.0, 0.0), false, false);
context.PolyLineTo(new[] {
new Point(0.75, 0.75),
new Point(1.5, 0.0),
new Point(2.25, 0.75),
new Point(3.0, 0.0)
}, true, true);
}
var brushPattern = new GeometryDrawing {
Pen = new Pen(Brushes.Red, 0.2),
Geometry = geometry
};
var brush = new DrawingBrush(brushPattern) {
TileMode = TileMode.Tile,
Viewport = new Rect(0.0, 1.5, 9.0, 3.0),
ViewportUnits = BrushMappingMode.Absolute
};
var pen = new Pen(brush, 3.0);
pen.Freeze();
return pen;
}
これはほとんど機能しますが、テキスト内で下線が引かれた単語の位置によっては、下線がいくつかの波が重なったパターンとして表示されることがよくあります。また、下線は正しい場合でも少しぼやけています(ピクセル間の描画に関するwpfの問題だと思います)。
私の解決策は試行錯誤のようなものだったので、特に Viewport/ViewportUnits では間違った方向に進んでいた可能性があります。
私は何を間違っていますか?鮮明な下線を取得する方法はありますか?
前もって感謝します。