トップページ⇒tech
71コメント13KB

☆★☆★ペイント☆ソフト☆★☆★

■ このスレッドは過去ログ倉庫に格納されています
0001ペイント聖矢NGNG
ペイントソフトのブラシ等の表現のアルゴリズムについて話し合うスレ。
早速ですが、ブラシの表現法がわかりません。
フォトショを参考にしてみると、塗っていくと回りが徐々にアンチエイリアスされて薄い色になっていくのが自然なのに、より濃い場所に重ね塗りすると濃いまんまです。これはどういうことでしょう。
0002名無しNGNG
「語り合うといいながら、実はただの質問スレ」
親切なかた、おしえてあげてくだされや。
0003デフォルトの名無しさんNGNG
>ペイント聖矢
ペガサス水性ケーン
0004デフォルトの名無しさんNGNG
>☆★☆★ペイント☆ソフト☆★☆★
チカチカピカチュー。てんかん筒井康隆ー。
0005デフォルトの名無しさんNGNG
これは、大変興味深いスレですね。
0006デフォルトの名無しさんNGNG

www.studiobt.com

専門なので入社して学ぶと早いよ
人材不足なのでよろしく
0007デフォルトの名無しさんNGNG
ブラシっつったらフォトショじゃなくて
ペイソターとか、オープソキャソバスとかだろ。

http://www.portalgraphics.net/
0008デフォルトの名無しさんNGNG
ブラシでアンチエイリアスするほうほうはどうやってやんだろな。LineTo使うのか?
0009デフォルトの名無しさんNGNG
>>8
バッファに直書きだろ?
0010デフォルトの名無しさんNGNG
SetPixelで?
0011 NGNG
 
0012デフォルトの名無しさんNGNG
DirectX使って見れば?(藁
0013デフォルトの名無しさんNGNG
フォトショとか描画は全部GDI関数使ってるわけ?
0014デフォルトの名無しさんNGNG
>>8>>10
ネタ?

メモリにゴリゴリでしょ
0015デフォルトの名無しさんNGNG
Bitmapの配列に直接書き込むということですか?
0016デフォルトの名無しさんNGNG
>>15
せめてDIBって言え。
びとまっぷじゃDDBと区別がつかん。(w
0017デフォルトの名無しさんNGNG
DIB使え!
あとで後悔する<俺
0018デフォルトの名無しさんNGNG
DIBの使い方がわかりません。とりあえず640*480*3のBYTE配列を用意してそれぞれに0をいれてDIBを作ってみましたが、デバコンに選択させても黒く描画されません。
0019デフォルトの名無しさんNGNG
>>18
ソース出せYo
0020k|mNGNG
BITMAPINFOHEADER bmih = {
    sizeof(BITMAPINFOHEADER), // お約束
    640, // 幅
    480, // 高さ
    1, // must be 1
    24, // 画素深度
    BI_RGB, 0, // お約束
    0,0,0,0 // てきとー
};

HDC mainDC=GetDC(winHandle);
HDC dc=CreateCompatobleDC(mainDC);
BYTE *pixels;
HBITMAP hBitmap=CreateDIBSection(dc,(BITMAPINFO *)&bmih,DIB_RGB_COLORS,(void **)&pixels,NULL,0);

//////////
// このあたりで pixels[] に何か描く
// 全部 0 にすればまっくろけ(わらい
//////////

HGDIOBJ old=SelectObject( dc, hBitmap );
BitBlt(mainDC,0,0,640,480,dc,0,0,SRCCOPY);
GdiFlush();
SelectObject(dc, old);
DeleteDC(dc);
DeleteObject(hBitmap);
ReleaseDC(mainDC);

んーと,実際には動かしてないんスけど,
DIBSection を使うといったら大体こんな感じだと思います。# 「デバイス独立ビットマップ」のくせに,
# どうして CreateDIBSection の引数には DC が必要かなぁ?
002119NGNG
>>20
ウチだと動いてる・・・。力になれずスマソ。
002220NGNG
ごめんなさい。
20 != 18 さんです。
>>18 さんへの助言のつもりでした。
0023デフォルトの名無しさんNGNG
>20
やっと思い通りにすることができました。どうもありがとうございます。

>22
どうも。描画されなかったのはhdcの指定が間違っていただけでした。
0024デフォルトの名無しさんNGNG
操作する際いちいち反対の座標を算出しなけりゃならないBMPのクソ仕様を恨む。
0025デフォルトの名無しさんNGNG
高さを負にするのは駄目?常用してるけど
0026デフォルトの名無しさんNGNG
なるほど。
0027デフォルトの名無しさんNGNG
>>25
再生できるペイントソフトってあんまりおおくないんじゃない?
0028デフォルトの名無しさんNGNG
>より濃い場所に重ね塗りすると濃いまんま

透明度のみを確保するバッファを作って、より不透明な場合だけ描画すれば良いと思います。
ストロークが終わった時に、その透明度バッファを、描画したいブラシ色で実際の画像領域に転送。
色でなくてあくまで不透明度を最初に描く、と。
0029デフォルトの名無しさんNGNG
乗算とか、オーバーレイって、どんな計算ですか?
0030デフォルトの名無しさんNGNG
>>27
保存の時には、ボトムアップに変換すればいいんじゃない?
0031デフォルトの名無しさんNGNG
ボトムアップって何?
003225NGNG
>>27
読み込み時は逆さに読み込んで、
書き込む場合は、逆さに書き込めばよいの。
0033デフォルトの名無しさんNGNG
ペイントソフトを作ろう系のHPないですか?
0034デフォルトの名無しさんNGNG
>>33
サイトは無いと思われ。
が、昔、雑誌の増刊にD-Pixedのソースが特別に収録されたことがあった。
アルゴリズム系の質問は「GIMPのソース見ろ」と言われるのがほとんど。
0035デフォルトの名無しさんNGNG
>D-Pixed
『熱血プログラマ塾』っつー本のCDにも載ってた。
ただ確か肝心のグラフィックエンジン部分(DLLの)ソースがなかった。
それと、D-Pixed使ったことがある人はわかるが、256色オンリー。

なんだかんだいいながら、結構参考にしたけど。
0036デフォルトの名無しさんNGNG
グラフィック描くオブジェクトはDLLに実装するべきなんですか?
WM_MOUSEMOVEメッセージで計算してバイト配列に書き込んでいるのですが、違う方法ありますか?
0037デフォルトの名無しさんNGNG
土井淳氏って何者ですか?
0038デフォルトの名無しさんNGNG
DーPIXEDを起動したときのロゴマークにアレアレアレアレアレアレアレアレアレ
0039デフォルトの名無しさんNGNG
>>37-38
アレがアレでも気にしない。続きはプログラマ板でどうぞ。
0040デフォルトの名無しさんNGNG
WM_MOUSEMOVEで処理すると、カーソルを速く動かしたときどうしても色が途切れます。
そこで、現在の座標と前回の座標の間を保管する方法をとりたいのですが、うまい方法ないですか。
ちなみに今使っているのは四角く塗られる(四角くなるようにメモリに書き込まれる)ブラシです。
0041デフォルトの名無しさんNGNG
>>40
LineToは?
0042デフォルトの名無しさんNGNG
>41
LineToはシステム上、使えません。
0043デフォルトの名無しさんNGNG
>>42
じゃあ、デジタル差分解析でも使ってLineToを実装すれば?
0044デフォルトの名無しさんNGNG
>>42

もしDDAが自分でできないなら、API の LineDDA もある。
0045デフォルトの名無しさんNGNG
っていうか、ブレゼンハムって言えよ!
0046デフォルトの名無しさんNGNG
古い話だが、「まぐろの全て」に似非キースのソースが丸ごと
はいっとる。TurboPascalだけど。
0047デフォルトの名無しさんNGNG
>>47
なにげに持ってる(w
0048レベル低すぎ01/08/30 19:44ID:9ljLjv7I
>>29
乗算なんか、単にPixelの色データ同士を乗算してるだけだっつーの。
Photoshopで、0〜255までのグラデーションでも描いて、
重ね合わせた状態で、点のデータをサンプリングして、
それをExcelで表にして、関数を推測しろゴルァ!
漏れはそうやって解析したぞ。
基本は、ある閾値で関数が切り替わっているのが多いって事だゴルァ!
ひとつだけ、指数関数使ってるのがあって解析に骨がおれたぜよ。

>>40
マウスの座標なんか補間しろや。Winはめったに座標返さないんだから。

大体、ペイントソフト作るのに、GDI命令の話はやめろって。
BitBlt以外なんにもつかわねーんだから。
0049☆☆&NGNG
0050☆☆&NGNG
0051デフォルトの名無しさんNGNG
>1
真っ黒の絵に薄い黒で塗っても黒いままって事?
0052255 ◇.net/HAANGNG
????
005333 kk ◆7hmTF7VU NGNG
?????
005433 kk ◆SP7y2oJk NGNG
??????
0055デフォルトの名無しさんNGNG
あげ  
0056 NGNG
あげ
0057デフォルトの名無しさんNGNG
つのだ☆ひろみたいだな
0058 NGNG
あげ
0059 NGNG
age
0060デフォルトの名無しさんNGNG
あげ
0061デフォルトの名無しさんNGNG
>>20
DCいらない。
NULLで大丈夫。
0062デフォルトの名無しさんNGNG
あげ
0063デフォルトの名無しさんNGNG
つのだ☆じろう@恐怖新聞
0064  NGNG
あげ
0065 NGNG
age
0066 NGNG
あげ
0067デフォルトの名無しさんNGNG
>>48
ソフトライト?
あれは罠だ。
0068デフォルトの名無しさんNGNG
>>48が全てを物語ってると思うが
なんでそんなにageてんの?
0069デフォルトの名無しさんNGNG
ageマニア.
0070 NGNG
あげ
0071デフォルトの名無しさんNGNG
>>48だけID憑きだな・・。
■ このスレッドは過去ログ倉庫に格納されています