10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BitmapからBitmapSourceへの変換

探したけど無かったのでやってみる。
メソッドとかあるんかな~
よ~わからんから自力で適当にメソッド組み合わせたら出来た

正確には
System.Drawing.Imaging.Bitmap クラスから
System.Windows.Media.ImageBrush クラスへの変換

何でこんなことしたいかって言うと
どうやらImageBrushはUriとかからしか画像を取得できないので
圧縮したやつをメモリ上で展開して云々とかやれないっぽい
なので使い慣れたBitmapクラスから変換するという力業で
まぁできたし問題なし!!

ちなみにこの辺のクラスはメソッド名が衝突しまくりなので名前空間が省略できない…


Bitmap bmp=new Bitmap("MyImage.jpg");
int dpix = (int)bmp.HorizontalResolution, dpiy = (int)bmp.VerticalResolution;//解像度
var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
IntPtr scan0 = data.Scan0;
int stride = data.Stride;
BitmapSource bs = BitmapSource.Create(bmp.Width, bmp.Height, dpix, dpiy, PixelFormats.Bgra32, BitmapPalettes.BlackAndWhite, scan0, bmp.Width*bmp.Height*4,stride);
bmp.UnlockBits(data);
bmp.Dispose();
ImageBrush ib = new ImageBrush(bs);

ぶっちゃけ
説明するところないや
bitmapを配列から作成できる人だと全部分かると思うし…
それが分からない人には分からないだろうし…
BitmapSource.Createには解像度渡す必要があるっぽいんだよねぇ~
*4してるのはintがbyteの4倍メモリ使ってるから
スポンサーサイト

Comment

Secret

検索フォーム

RSSリンクの表示

リンク

リンクというか個人的によく使うアルゴリズムの解説サイト… C#でなかったりする

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。