RyutoThurusaki / FastPuri

0 stars 0 forks source link

黒色のペンが消滅する #4

Closed RyutoThurusaki closed 1 year ago

RyutoThurusaki commented 2 years ago

0,0,0の黒色のペン/アウトラインが画像を保存するときに消滅する

System.Drawing.Color color = System.Drawing.Color.FromArgb(0,0,0,0); をもとにCanvas2Bitmap.MakeTransparentしてるため黒色に反応して消してしまう。

Alphaだけを使うか、黒色の最大値をずらすかして対応したいかな

System.Drawing.Color.FromArgb(0)はうまくいかなかった。

RyutoThurusaki commented 2 years ago

真っ黒の線は描画できないようにして黒=透過値として扱うのが楽な気がする

RyutoThurusaki commented 2 years ago
            //validate rich black
            Color validate = System.Windows.Media.Color.FromArgb(255, 0, 0, 0);
            Color swapblack = System.Windows.Media.Color.FromArgb(255, 1, 1, 1);
            if (color_pen == validate)
            {
                color_pen = swapblack;
            }
            if (color_outline == validate)
            {
                color_outline = swapblack;
            }

って真っ黒をちょい黒に置き換えた上でやってみたけどできなかった。各値10くらいの差が無いとCanvas2Bitmap.MakeTransparentで別の色として認識されない…? Color swapblack = System.Windows.Media.Color.FromArgb(255, 15, 15, 15); くらいにしたらうまくいったけれど255, 11, 8, 3, 14みたいな中途半端な色と比較、swapblackに置き換えするのが難しい

RyutoThurusaki commented 2 years ago

あと背景色が黒だと合成の結果、フチが汚くなるので一緒に直したいね。 しきい値を強くするか透過に使う色を白にする…?

https://learn.microsoft.com/ja-jp/windows/win32/direct2d/how-to-clip-with-bitmap-masks あとこれは使えそうな希ガス

RyutoThurusaki commented 2 years ago

https://social.msdn.microsoft.com/Forums/vstudio/en-US/cd92fad7-8a1d-4b8b-a728-8122af105504/is-it-possible-to-save-inkcanvas-as-png-with-transparent-background?forum=wpf

ありがたや

RyutoThurusaki commented 2 years ago

ふと思ったけど、透過色はFromArgb(255, 0, 0, 15)とかにすれば比較簡単だったじゃん。 なおこれでちゃんと動くかは未確認。 メモメモ

RyutoThurusaki commented 2 years ago

アルファをカラーにぶちこめば透過用の別Bitmapは作れるか あるいは一旦透過情報付きのPNGにペン情報を保存して合成するとか?

RyutoThurusaki commented 2 years ago

https://www.ipentec.com/document/csharp-32bit-argb-bitmap-load

RyutoThurusaki commented 1 year ago

RenderTargetBitmapで直に合成しちゃうのもアリ…?

RyutoThurusaki commented 1 year ago

そもそもInkcanvasはパス情報なんだからMainImageにDrawingVisualで合成しちゃえばいいじゃんっていうことでかいけつ。