2012-01-26 21 views
0

タイトルに言及します。私はガンマトーンカーブを描こうとしていますが、どうやってそれを行うのか分かりません。私は線形トーンカーブをうまくやることができますが、ガンマトーンカーブを描くときは、私はそれを完全に失います。 http://www.mediachance.com/pseam/help/curves.html(第1又は第2図)から参照としてC++ setpixel関数を使用してグラフにトーンカーブ(ガンマ)を描画する方法

#include <math.h> 

static COLORREF red=RGB(255,0,0); 
static COLORREF blue=RGB(0,0,255); 
static COLORREF green=RGB(0,255,0); 

iはグラフを描画することは簡単であるべきであるガンマトーンカーブ

for(int y=0; y<bih.biHeight; y++) 
      {      
       for(int x=0; x<bih.biWidth; x++) 
       { 
       SetPixel(hdc, x, bih.biHeight-x, red); 
} 

// The X axis of the graph 

HPEN hLinePen1; 
       COLORREF qLineColor1; 
       qLineColor1 = RGB(255, 0, 0); 
       hLinePen1 = CreatePen(PS_SOLID, 2, qLineColor1); 
       hPenOld1 = (HPEN)SelectObject(hdc, hLinePen1); 
       line(hdc,0, bih.biHeight, bih.biWidth, bih.biHeight); 
       SelectObject(hdc, hPenOld1); 
       DeleteObject(hLinePen1); 
// The Y axis of the graph 

       HPEN hLinePen2; 
       COLORREF qLineColor2; 
       qLineColor2 = RGB(255, 0, 0); 
       hLinePen2 = CreatePen(PS_SOLID, 2, qLineColor2); 
       hPenOld2 = (HPEN)SelectObject(hdc, hLinePen2); 
       line(hdc,0, bih.biHeight, 0, bih.biWidth-bih.biHeight); 
       SelectObject(hdc, hPenOld2); 
       DeleteObject(hLinePen2); 
+0

"私はリニアトーンカーブをうまくやることができますが、ガンマトーンカーブを描くにはどうすればいいですか"というコード、またはリンクはありますか? – desgraci

答えて

1

を描画するために組み込むべき部品以下として

コード。あなたが持っている各Xポイントについて、対応するY値を計算します。ガンマの場合、0-255のスケールで、y = round(pow(x/255., gamma)*255)になります。それから、直前の点から現在の点まで直線を描きます。

+0

こんにちは、あなたは例がありますか?追加するには、高さと幅に基づいてX軸とY軸のグラフを描画していますが、255がどこに来るのか分かりません。 – Newbie

+0

こんにちは、誰も助けてくれますか? – Newbie

+0

こんにちはマーク、私は内部の数式を実行しました。残念ながら、それは動作しませんが、私はそれが数式であることを知っています、ありがとう! – Newbie

関連する問題