C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Interpolationを設定する方法

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■90817 / inTopicNo.1)  Interpolationを設定する方法
  
□投稿者/ 虎の巻 (1回)-(2019/04/24(Wed) 16:19:06)

分類:[.NET 全般] 

バイト配列からPictureBoxに画像を表示するプログラムをVBで書いています。

一部抜粋ですが


Dim img As Bitmap = New Bitmap(w, h, PixelFormat.Format8bppIndexed)

PictureBox1.Image = img
PictureBox1.Refresh()


この時、Interpolationの設定を変更したいのですが
どのようにすれば良いですか?

https://dobon.net/vb/dotnet/graphics/interpolationmode.html
JPEG画像から読み込む場合にはこのページに方法が記載されているのですが、

例えば、バイト配列が256x256だったとして、
PictureBoxのサイズが800x800だとすると、
一度、Canvasファイルに800x800にサイズでInterpolationした画像データを生成し、
それをPictureBoxにコピーする必要がありますか?

何となく、そうすると二度手間になっており、
処理が遅くなりそうな気がしますが、
これで合っていますか?
引用返信 編集キー/
■90818 / inTopicNo.2)  Re[1]: Interpolationを設定する方法
□投稿者/ とっちゃん (587回)-(2019/04/24(Wed) 16:55:49)
No90817 (虎の巻 さん) に返信
> この時、Interpolationの設定を変更したいのですが
> どのようにすれば良いですか?
>
Dim img 省略

'img にバイト配列から取り込む処理

Dim canvas As bitmap = New Bitmap( PictureBox で表示したい、幅と高さ とピクセルフォーマット )

Dim g As Graphics = Graphics.FromImage(canvas)

g.InterpolationMode = セットしたいなにがし

g.DrawImage( img, 以下省略 )

PictureBox1.Image = canvas;

こんな感じですかね。

> それをPictureBoxにコピーする必要がありますか?
>
引っかかるのは、ここですよね?


image(Imageクラス)は、参照型です。なので以下の処理はコピーではなく、参照先を増やすという形になります。
PictureBox1.Image = img

こうすることで、img オブジェクトの実体(参照先)は、img というインスタンスともう一つ PictureBox1.Image インスタンスからも
「参照」される形になります。

あくまでも参照なので、コピーにはなりません。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ