5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :ペイント聖矢:2001/08/20(月) 12:30
ペイントソフトのブラシ等の表現のアルゴリズムについて話し合うスレ。
早速ですが、ブラシの表現法がわかりません。
フォトショを参考にしてみると、塗っていくと回りが徐々にアンチエイリアスされて薄い色になっていくのが自然なのに、より濃い場所に重ね塗りすると濃いまんまです。これはどういうことでしょう。

2 :名無し:2001/08/20(月) 12:35
「語り合うといいながら、実はただの質問スレ」
親切なかた、おしえてあげてくだされや。

3 :デフォルトの名無しさん:2001/08/20(月) 12:39
>ペイント聖矢
ペガサス水性ケーン

4 :デフォルトの名無しさん:2001/08/20(月) 13:06
>☆★☆★ペイント☆ソフト☆★☆★
チカチカピカチュー。てんかん筒井康隆ー。

5 :デフォルトの名無しさん:2001/08/20(月) 14:48
これは、大変興味深いスレですね。

6 :デフォルトの名無しさん:2001/08/20(月) 15:53

www.studiobt.com

専門なので入社して学ぶと早いよ
人材不足なのでよろしく

7 :デフォルトの名無しさん:2001/08/20(月) 16:36
ブラシっつったらフォトショじゃなくて
ペイソターとか、オープソキャソバスとかだろ。

http://www.portalgraphics.net/

8 :デフォルトの名無しさん:2001/08/20(月) 17:02
ブラシでアンチエイリアスするほうほうはどうやってやんだろな。LineTo使うのか?

9 :デフォルトの名無しさん:2001/08/20(月) 17:06
>>8
バッファに直書きだろ?

10 :デフォルトの名無しさん:2001/08/20(月) 17:21
SetPixelで?

11 : :2001/08/20(月) 17:37
 

12 :デフォルトの名無しさん:2001/08/20(月) 17:37
DirectX使って見れば?(藁

13 :デフォルトの名無しさん:2001/08/20(月) 17:39
フォトショとか描画は全部GDI関数使ってるわけ?

14 :デフォルトの名無しさん:2001/08/20(月) 18:13
>>8>>10
ネタ?

メモリにゴリゴリでしょ

15 :デフォルトの名無しさん:2001/08/20(月) 18:21
Bitmapの配列に直接書き込むということですか?

16 :デフォルトの名無しさん:2001/08/20(月) 18:23
>>15
せめてDIBって言え。
びとまっぷじゃDDBと区別がつかん。(w

17 :デフォルトの名無しさん:2001/08/20(月) 22:37
DIB使え!
あとで後悔する<俺

18 :デフォルトの名無しさん:2001/08/20(月) 23:27
DIBの使い方がわかりません。とりあえず640*480*3のBYTE配列を用意してそれぞれに0をいれてDIBを作ってみましたが、デバコンに選択させても黒く描画されません。

19 :デフォルトの名無しさん:2001/08/20(月) 23:54
>>18
ソース出せYo

20 :k|m:2001/08/21(火) 01:20
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 が必要かなぁ?

21 :19:2001/08/21(火) 09:47
>>20
ウチだと動いてる・・・。力になれずスマソ。

22 :20:2001/08/21(火) 09:59
ごめんなさい。
20 != 18 さんです。
>>18 さんへの助言のつもりでした。

23 :デフォルトの名無しさん:2001/08/21(火) 15:46
>20
やっと思い通りにすることができました。どうもありがとうございます。

>22
どうも。描画されなかったのはhdcの指定が間違っていただけでした。

24 :デフォルトの名無しさん:2001/08/21(火) 16:14
操作する際いちいち反対の座標を算出しなけりゃならないBMPのクソ仕様を恨む。

25 :デフォルトの名無しさん:2001/08/21(火) 18:29
高さを負にするのは駄目?常用してるけど

26 :デフォルトの名無しさん:2001/08/21(火) 21:56
なるほど。

27 :デフォルトの名無しさん:2001/08/21(火) 22:52
>>25
再生できるペイントソフトってあんまりおおくないんじゃない?

28 :デフォルトの名無しさん:2001/08/21(火) 23:47
>より濃い場所に重ね塗りすると濃いまんま

透明度のみを確保するバッファを作って、より不透明な場合だけ描画すれば良いと思います。
ストロークが終わった時に、その透明度バッファを、描画したいブラシ色で実際の画像領域に転送。
色でなくてあくまで不透明度を最初に描く、と。

29 :デフォルトの名無しさん:2001/08/22(水) 13:46
乗算とか、オーバーレイって、どんな計算ですか?

30 :デフォルトの名無しさん:2001/08/22(水) 14:02
>>27
保存の時には、ボトムアップに変換すればいいんじゃない?

31 :デフォルトの名無しさん:2001/08/22(水) 14:13
ボトムアップって何?

32 :25:2001/08/22(水) 16:07
>>27
読み込み時は逆さに読み込んで、
書き込む場合は、逆さに書き込めばよいの。

33 :デフォルトの名無しさん:2001/08/22(水) 16:24
ペイントソフトを作ろう系のHPないですか?

34 :デフォルトの名無しさん:2001/08/22(水) 23:10
>>33
サイトは無いと思われ。
が、昔、雑誌の増刊にD-Pixedのソースが特別に収録されたことがあった。
アルゴリズム系の質問は「GIMPのソース見ろ」と言われるのがほとんど。

35 :デフォルトの名無しさん:2001/08/22(水) 23:22
>D-Pixed
『熱血プログラマ塾』っつー本のCDにも載ってた。
ただ確か肝心のグラフィックエンジン部分(DLLの)ソースがなかった。
それと、D-Pixed使ったことがある人はわかるが、256色オンリー。

なんだかんだいいながら、結構参考にしたけど。

36 :デフォルトの名無しさん:2001/08/23(木) 07:18
グラフィック描くオブジェクトはDLLに実装するべきなんですか?
WM_MOUSEMOVEメッセージで計算してバイト配列に書き込んでいるのですが、違う方法ありますか?

37 :デフォルトの名無しさん:2001/08/23(木) 09:39
土井淳氏って何者ですか?

38 :デフォルトの名無しさん:2001/08/23(木) 09:44
DーPIXEDを起動したときのロゴマークにアレアレアレアレアレアレアレアレアレ

39 :デフォルトの名無しさん:2001/08/23(木) 09:46
>>37-38
アレがアレでも気にしない。続きはプログラマ板でどうぞ。

40 :デフォルトの名無しさん:2001/08/23(木) 10:12
WM_MOUSEMOVEで処理すると、カーソルを速く動かしたときどうしても色が途切れます。
そこで、現在の座標と前回の座標の間を保管する方法をとりたいのですが、うまい方法ないですか。
ちなみに今使っているのは四角く塗られる(四角くなるようにメモリに書き込まれる)ブラシです。

41 :デフォルトの名無しさん:2001/08/23(木) 12:04
>>40
LineToは?

42 :デフォルトの名無しさん:2001/08/23(木) 15:08
>41
LineToはシステム上、使えません。

43 :デフォルトの名無しさん:2001/08/23(木) 16:33
>>42
じゃあ、デジタル差分解析でも使ってLineToを実装すれば?

44 :デフォルトの名無しさん:2001/08/23(木) 19:34
>>42

もしDDAが自分でできないなら、API の LineDDA もある。

45 :デフォルトの名無しさん:2001/08/23(木) 21:52
っていうか、ブレゼンハムって言えよ!

46 :デフォルトの名無しさん:2001/08/24(金) 01:46
古い話だが、「まぐろの全て」に似非キースのソースが丸ごと
はいっとる。TurboPascalだけど。

47 :デフォルトの名無しさん:2001/08/24(金) 18:35
>>47
なにげに持ってる(w

48 :レベル低すぎ:01/08/30 19:44 ID:9ljLjv7I
>>29
乗算なんか、単にPixelの色データ同士を乗算してるだけだっつーの。
Photoshopで、0〜255までのグラデーションでも描いて、
重ね合わせた状態で、点のデータをサンプリングして、
それをExcelで表にして、関数を推測しろゴルァ!
漏れはそうやって解析したぞ。
基本は、ある閾値で関数が切り替わっているのが多いって事だゴルァ!
ひとつだけ、指数関数使ってるのがあって解析に骨がおれたぜよ。

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

大体、ペイントソフト作るのに、GDI命令の話はやめろって。
BitBlt以外なんにもつかわねーんだから。

49 :☆☆&:01/10/04 14:51


50 :☆☆&:01/10/04 14:51


10 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)