1

WPF アプリケーションで WritableBitmapEx を使用して、 WritableBitmapに多くの図形を描画しています。残念ながら、円弧を描く機能はありません。

どうやって:

1. WritableBitmap に弧を描く?

2. WritableBitmap に可変の太さでアンチエイリアス処理された円弧を描画しますか?

円弧を描くだけです。

Canvas 上に可変の太さ (System.Windows.Media.ArcSegment) で素敵なアンチエイリアス処理された円弧を描画する可能性がありますが、数千の形状では Canvas のパフォーマンスが低下します。そのため、WritableBitmap を使用しています。

一部のアルゴリズムで必要になる場合は、CenterPoint、Radius、StartPoint、EndPoint、StartAngle、EndAngle、ArcLength、IsLarge、Direction などの円弧パラメーターを既に計算しています。

次のようなコードで手動で描画しようとしていました。

int number_of_points = 1000;
for(int i=0; i<=number_of_points; i++){
    double progress=(double)i/number_of_points;
    double theta = (StartAngle + ArcLength * progress) * Math.PI / 180.0;
    draw_pixel(
        Center.X + Radius * Math.Cos(theta),
        Center.Y + Radius * Math.Sin(theta)
    );
}

しかし、さまざまな画像の解像度、さまざまなサイズのアーク (最適な number_of_points の計算方法)、さまざまなアークの太さ、およびアンチ エイリアシングを使用すると、少しトリッキーになり始めます。

4

1 に答える 1