【課題7-10】円を描く(加点)
プロジェクトタイプ | C#コンソールアプリ※ |
---|---|
プロジェクト名 | Prac_7_10 |
ソリューション名 | PET7 |
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用しない(チェックオン) |
※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!
指定した中心位置と半径の塗りつぶした円を描いた画像ファイルを生成するプログラムを作成せよ.
注意
- この課題は加点課題である.
- 必ずC#で画像を扱う方法の説明を読んでから取り組むこと.
C#で画像を扱う方法
表示するにはここをクリック
C#で画像を扱う方法はいくつかあるが,ここではSkiaSharpという ライブラリを使用する方法を紹介する.
このライブラリをプロジェクトにインストールして以下のように書くと,実行ファイルと同じ場所に
output.png
という赤一色の画像ファイルが作られる(このプログラムを実行するには後述するプロジェクトの設定が必要である).
|
|
SkiaSharpを使用するためには以下の手順を行えばよい.
- 【手順】SkiaSharpのセットアップ手順
以上のセットアップを行い_のプログラムを書き込んで実行すると画像が生成されファイルに保存される. 保存された画像ファイルを確認するには以下の手順を行う.
- 【手順】出力画像の確認方法
詳しい操作方法が分からない場合は,_の動画を参考にするとよい2,3.
表示するにはここをクリック : 閉じる
_をベースとして,_ のような内側を塗りつぶした円を 描いた画像を生成するプログラムを作成せよ. 画像サイズは_の通り縦横512×512ピクセルで固定とする.
この円の以下の特徴は自在に変更できるようにすること.
- 円の中心位置
- 半径
- 前景色(円の内側の色)
- 背景色(円の外側の色)
このために_のようにMain()
メソッドの冒頭に以下のような定数を用意すること.
|
|
ヒント
表示するにはここをクリック
- 「描画中の画素の位置」から「円の中心」までの距離を計算すればその画素が円の内側にいるか外側にいるかを判定することができる.
- 点$a(x_1, y_1)$と点$b(x_2, y_2)$のあいだの距離$D_{ab}$は以下のようにして計算できる.
- 表記について,$\sqrt{v}$は$v$の平方根を意味する.C#ではMath.Sqrt()メソッドを用いて平方根を計算することができる.
$$ D_{ab} = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2} $$
表示するにはここをクリック : 閉じる