C#制作图片列表

biny237 2009-07-28 03:27:48
我想做个图片列表,就是一个下拉列表,但内容只有图片,不知道如何做,请大虾指点。。。
另外,想知道控件之间彼此覆盖,怎么样才能让自己想用的空间处于最上面,因为控件很多,置顶已经不能起作用,而且置顶的话,会是控件排列很乱导致修改错误。。。
...全文
509 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjp1234airen4385 2009-07-30
  • 打赏
  • 举报
回复
可以的,你必须画上去。

string AppPath;

public Form1()
{
InitializeComponent();
AppPath = Application.StartupPath + "\\";
for (int i = 0; i < 10; i++)
{
comboBox2.Items.Add(Image.FromFile(AppPath + "Images\\" + i.ToString() + ".png"));
}
this.comboBox2.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.comboBox2.DropDownHeight = 400;
this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox2.FormattingEnabled = true;
this.comboBox2.IntegralHeight = false;
this.comboBox2.ItemHeight = 40;
this.comboBox2.Location = new System.Drawing.Point(228, 12);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(247, 46);
this.comboBox2.TabIndex = 0;
this.comboBox2.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.comboBox2_DrawItem);
}

private void comboBox2_DrawItem(object sender, DrawItemEventArgs e)
{
int i = e.Index;

e.DrawBackground();
Graphics g = e.Graphics;
RectangleF RectF;
Font font = new Font(this.Font.Name, 30, FontStyle.Bold);
Brush brush = new SolidBrush(this.ForeColor);
Font fontChar = new Font(this.Font.Name, 14, FontStyle.Bold);
int ImageSize = comboBox2.ItemHeight - 2;
if(i > - 1)
{

RectF = new RectangleF(8, e.Bounds.Top + 2, ImageSize, ImageSize);
g.DrawImage((Image)comboBox2.Items[i], RectF, new RectangleF(0, 0, ((Image)comboBox2.Items[i]).Width,
((Image)comboBox2.Items[i]).Height), GraphicsUnit.Pixel);
g.DrawString("这是第【" + i.ToString() + "】张图", fontChar, brush, RectF.Right + 4,
RectF.Top + (RectF.Height - g.MeasureString("图", fontChar).Height) / 2);
}
e.DrawFocusRectangle();
}
hecker728 2009-07-30
  • 打赏
  • 举报
回复
关注
xiao_jun_0820 2009-07-30
  • 打赏
  • 举报
回复
下拉列表显示图片好象没有现成的控件啊,考虑下用ListView控件,每行显示一张图片,操作系统里都用的是ListView这种的.,然后比如你要选择某张图片,可以在ListView控件的click事件或doubleclick事件里写相应的处理代码
biny237 2009-07-30
  • 打赏
  • 举报
回复
继续等待 大虾
新丁11111 2009-07-29
  • 打赏
  • 举报
回复
关注
biny237 2009-07-29
  • 打赏
  • 举报
回复
D顶起 大家来帮忙啊
zicheng121 2009-07-29
  • 打赏
  • 举报
回复
关注中……
biny101 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bigmingming 的回复:]
如果用N个PictureBox显示,就会太慢太占内存,所以我们应该采用一个PictureBox或panel放N多图片 
   
  这样实现 
  1)  从数据库中读出一批图片,依次画到一个PictureBox里面,记下这个图片所在的框(矩形区域),可以用hashtable记录 
   
  Hashtable  hash  =  new  Hashtable(); 
  hash.Add(图片ID号,  图片矩形对象); 
   
  2)在  picturebox_click事件写代码,取得当前鼠标的x,y,然后去hash里面找到相应矩形记录就可以了
[/Quote]




没看明白啥意思。。。
bigmingming 2009-07-28
  • 打赏
  • 举报
回复
如果用N个PictureBox显示,就会太慢太占内存,所以我们应该采用一个PictureBox或panel放N多图片

这样实现
1) 从数据库中读出一批图片,依次画到一个PictureBox里面,记下这个图片所在的框(矩形区域),可以用hashtable记录

Hashtable hash = new Hashtable();
hash.Add(图片ID号, 图片矩形对象);

2)在 picturebox_click事件写代码,取得当前鼠标的x,y,然后去hash里面找到相应矩形记录就可以了

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧