「Windows API/図形の描画」の版間の差分

ナビゲーションに移動 検索に移動
SetPixel()のコード例として三角関数のsinのグラフの描画コードを記述。
(SetPixel()のコード例として三角関数のsinのグラフの描画コードを記述。)
なお、単に数値を計算するだけなら、標準C言語の math.h などで数学の関数が用意されているので、それをインクルードして関数を使用してパソコンに計算してもらえばいい。
 
一例として、三角関数のグラフは、たとえば次のようなコードで実際にグラフを書ける。( case WM_PAINT 部分の抜粋)
 
<source lang=c>
さて、SetPixel でグラフを書いた場合、計算のケタ落ちなどの問題からか、グラフが 飛び飛び の 途切れ途切れ になるような場合がある。また、SetPixel によるグラフ描画は、計算回数も多いので、用途によっては不適切である。
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: HDC を使用する描画コードをここに追加してください...
int xCount; int yPixel;
 
int bunkainou = 50;
int sinpuku = 70; // 振幅のつもり
 
for (int xCount = 100; xCount < bunkainou * 10; ++xCount) {
yPixel = sinpuku * sin((double)xCount / (double)bunkainou);
SetPixel(hdc, xCount, 100 + yPixel, RGB(170, 170, 255));
}
EndPaint(hWnd, &ps);
}
break;
</source>
 
なお、冒頭で math.h をインクルードしておくのを忘れないように。なお、説明の単純化のため、上記コードを実行しても座標軸などの描画は無く、描かれるのは三角関数の正弦波のグラフだけである。
 
 
さて、SetPixel でグラフを書いた場合、計算のケタ落ちなどの問題からか、グラフが 飛び飛び の 途切れ途切れ になるような場合がある。また(実際SetPixelうえのコードを windows10 で実行したところ(2019年よるグラフ描画は実行)計算回三角関も多いで、用曲線がところどころ切れ途切れ っては不適切である。
 
 
また、SetPixel によるグラフ描画は、計算回数も多いので、用途によっては不適切である。
 
もし、図形が飛び飛びになってしまうと、グラフに沿って塗りつぶしをしたい場合、飛び飛びだと塗りつぶしの境界枠にできない。
22,778

回編集

案内メニュー