人に聞けない痔の悩み、これでスッキリ >>

お世話になります。

ListviewにImagelistを代入し、表示するものを作成しております。
枠のサイズは100×100で、実際のjpeg画像は約100×75です。
しかしながら、画像以外の箇所の色指定もしくは透過色を指定したいのですが、変更されません。
以下にサンプルコードと画面サンプルを登録させていただきます。

// 幅w、高さhのImageオブジェクトを作成
Image createThumbnail(Image image, int w, int h)
{
Bitmap canvas = new Bitmap(w, h);

Graphics g = Graphics.FromImage(canvas);
g.FillRectangle(new SolidBrush(Color.White), 0, 0, w, h);

float fw = (float)w / (float)image.Width;
float fh = (float)h / (float)image.Height;

float scale = Math.Min(fw, fh);
fw = image.Width * scale;
fh = image.Height * scale;

g.DrawImage(image, (w - fw) / 2, (h - fh) / 2, fw, fh);
g.Dispose();

return canvas;
}

private void button2_Click(object sender, EventArgs e)
{
string imageDir = @"C:\thumbnailTest\Image"; // 画像ディレクトリ
string[] jpgFiles =
System.IO.Directory.GetFiles(imageDir, "*.jpg");

int width = 100;
int height = 100;

imageList1.ImageSize = new Size(width, height);
listView1.LargeImageList = imageList1;

imageList1.TransparentColor = Color.Transparent;

for (int i = 0; i < jpgFiles.Length; i++)
{
Image original = Bitmap.FromFile(jpgFiles[i]);
Image thumbnail = createThumbnail(original, width, height);

imageList1.ColorDepth = ColorDepth.Depth24Bit;
imageList1.Images.Add(thumbnail);
listView1.Items.Add(jpgFiles[i], i);

original.Dispose();
thumbnail.Dispose();
}
}

お手数ですが、ご教授いただきたく宜しくお願い申し上げます。

「C#2005 Imagelistの余白の」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (1件)

 こんばんは。



 private void button2_Click(object sender, EventArgs e)ハンドラ内で、

 imageList1.TransparentColor = Color.Transparent;

 となっている事から、

 Image createThumbnail(Image image, int w, int h)メソッド中の以下、

 g.FillRectangle(new SolidBrush(Color.White), 0, 0, w, h);

 では無くて、

 g.FillRectangle(new SolidBrush(Color.Transparent), 0, 0, w, h);

 ではないでしょうか(一応VC#2008で確認しています)。

この回答への補足

ご回答ありがとうございます。

実行してみた結果、動作することを確認しました。

ありがとうございました。

補足日時:2009/10/28 08:55
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

実行してみた結果、動作することを確認しました。

ありがとうございました。

お礼日時:2009/10/28 09:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qpictureboxの画像を削除するには?

Visual C# 2008を使用しています。

ボタンを押すとpictureboxに画像が表示されるプログラムを作成しました。
今度は、その表示された画像をクリックし、別のボタンを押すことでその画像が削除できるようにしたいと思っているのですが、うまくプログラムできません。

誰か教えていただけないでしょうか?
ソースコードは以下のようになっています。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace algorithm
{
public partial class Form1 : Form
{
int space = 10;

public Form1()
{
InitializeComponent();
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

private void kihonsyori_Click(object sender, EventArgs e)
{
if (this.pictureBox1.Image == null)
{
Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\基本処理箱.png");
Graphics g = pictureBox1.CreateGraphics();
g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height);
space += 50;
img.Dispose();
g.Dispose();
}
else
{
this.pictureBox1.Image.Dispose();
this.pictureBox1.Image = null;
}
}

private void groupBox1_Enter(object sender, EventArgs e)
{

}

private void pictureBox1_Click(object sender, EventArgs e)
{

}

private void hanpuku_Click(object sender, EventArgs e)
{
if (this.pictureBox1.Image == null)
{
Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\反復箱.png");
Graphics g = pictureBox1.CreateGraphics();
g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height);
space += 80;
img.Dispose();
g.Dispose();
}
else
{
this.pictureBox1.Image.Dispose();
this.pictureBox1.Image = null;
}
}


private void sentaku_Click(object sender, EventArgs e)
{
if (this.pictureBox1.Image == null)
{
Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\選択箱.png");
Graphics g = pictureBox1.CreateGraphics();
g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height);
space += 80;
img.Dispose();
g.Dispose();
}
else
{
this.pictureBox1.Image.Dispose();
this.pictureBox1.Image = null;
}
}

private void sakujyo_Click(object sender, EventArgs e)
{
pictureBox1.Image = null;
space = 0;
}
}
}

Visual C# 2008を使用しています。

ボタンを押すとpictureboxに画像が表示されるプログラムを作成しました。
今度は、その表示された画像をクリックし、別のボタンを押すことでその画像が削除できるようにしたいと思っているのですが、うまくプログラムできません。

誰か教えていただけないでしょうか?
ソースコードは以下のようになっています。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;...続きを読む

Aベストアンサー

 こんにちは。
 別口で実験台のC#のプロジェクトを作成しても良いのならば、以下で試せませんか。
 pictureBox1, button1(読み込み), button2(削除)が必要です。参考程度で。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//スタートアップ
private void Form1_Load(object sender, EventArgs e)
{
this.pictureBox1.Image = new Bitmap("test.bmp");
this.pictureBox1.Invalidate();

this.button2.Enabled = false;
}

//読み込みボタン
private void button1_Click(object sender, EventArgs e)
{
if (this.pictureBox1.Image != null)
this.pictureBox1.Image.Dispose();

this.pictureBox1.Image = new Bitmap("test.bmp");
this.pictureBox1.Invalidate();
}

//削除ボタン
private void button2_Click(object sender, EventArgs e)
{
this.pictureBox1.Image.Dispose();
this.pictureBox1.Image = null;
this.pictureBox1.Invalidate();

this.button2.Enabled = false;
}

//ピクチャーボックスをクリックする
private void pictureBox1_Click(object sender, EventArgs e)
{
if (this.pictureBox1.Image == null)
return;

this.button2.Enabled ^= true;
}
}
}

 こんにちは。
 別口で実験台のC#のプロジェクトを作成しても良いのならば、以下で試せませんか。
 pictureBox1, button1(読み込み), button2(削除)が必要です。参考程度で。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
...続きを読む


人気Q&Aランキング