あなたが提供した記事は、プリミティブで線を描く方法を提案しています。ベクトルグラフィックス、言い換えれば。Paintのようなアプリケーションは、ほとんどがピクセルベースです(Photoshopのようなより高度なソフトウェアにはベクトルとラスタライズ機能がありますが)。
ビットマップエディタ
「ペイントのような」ものにしたいので、私は間違いなくピクセルベースのアプローチを採用します。
- 色の値のグリッドを作成します。( System.Drawing.Bitmapクラスを拡張するか、独自のクラスを実装します。)
- (ゲーム)ループを開始します:
- 必要に応じて、ビットマップを保存します。
ビットマップに描画する
ここで使用している画像クラスの大まかなドラフトを回答の下部に追加しました。しかし、コードはとにかく非常に自明である必要があります。
前述のように、画像をTexture2Dに変換して画面に描画する方法も実装する必要があります。
まず、新しい10x10画像を作成し、すべてのピクセルを白に設定します。
var image = new Grid<Color>(10, 10);
image.Initilaize(() => Color.White);

次に、ブラシを設定します。ブラシは、本質的には画像全体に適用される機能にすぎません。この場合、関数は指定された円内のすべてのピクセルを濃い赤色に設定する必要があります。
// Create a circular brush
float brushRadius = 2.5f;
int brushX = 4;
int brushY = 4;
Color brushColor = new Color(0.5f, 0, 0, 1); // dark red

次に、ブラシを適用します。円の内側のピクセルを識別する方法については、私のこのSO回答を参照してください。ブラシオフセットにマウス入力を使用して、ユーザーが実際にビットマップに描画できるようにすることができます。
double radiusSquared = brushRadius * brushRadius;
image.Modify((x, y, oldColor) =>
{
// Use the circle equation
int deltaX = x - brushX;
int deltaY = y - brushY;
double distanceSquared = Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2);
// Current pixel lies inside the circle
if (distanceSquared <= radiusSquared)
{
return brushColor;
}
return oldColor;
});

ブラシの色と古いピクセルの間を補間することもできます。たとえば、ブレンド量をブラシの中心と現在のピクセルの間の距離に依存させることで、「ソフト」ブラシを実装できます。

線を引く
フリーハンドの線を描くには、(マウスの動きに応じて)毎回異なるオフセットでブラシを繰り返し適用します。

カスタム画像クラス
私は明らかにいくつかの必要なプロパティ、メソッド、およびデータ検証をスキップしましたが、あなたは考えを理解します:
public class Image
{
public Color[,] Pixels { get; private set; }
public Image(int width, int height)
{
Pixels= new Color[width, height];
}
public void Initialize(Func<Color> createColor)
{
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
Pixels[x, y] = createColor();
}
}
}
public void Modify(Func<int, int, Color, Color> modifyColor)
{
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
Color current = Pixels[x, y];
Pixels[x, y] = modifyColor(x, y, current);
}
}
}
}