由网友(考试如同刚分手@)分享简介:在选择事件发生后一个TreeView,我填充图像的列表视图。我想自定义格式这些图像,并将黑色边框每个图像。私人无效TreeView1_Select(对象发件人,EventArgs的){如果(文件夹= NULL和放大器;!&安培; System.IO.Directory.Exists(文件夹)){DirectoryIn...![ug里的工程图什么去掉视图外的框框](https://p.xsw88.cn/allimgs/daicuo/20230906/1732.png)
在选择事件发生后一个TreeView,我填充图像的列表视图。 我想自定义格式这些图像,并将黑色边框每个图像。
私人无效TreeView1_Select(对象发件人,EventArgs的){
如果(文件夹= NULL和放大器;!&安培; System.IO.Directory.Exists(文件夹)){
DirectoryInfo的DIR =新的DirectoryInfo(@folder);
的foreach(在dir.GetFiles的FileInfo文件()){
尝试 {
imageList.Images.Add(Image.FromFile(file.FullName));
} 抓住 {
Console.WriteLine(这不是一个图像文件);
}
}
对于(INT J = 0; J< imageList.Images.Count; J ++){
this.ListView1.Items.Add(项目+ J);
this.ListView1.Items [J] .ImageIndex = j的;
}
this.ListView1.View = View.LargeIcon;
this.ListView1.LargeImageList =图像列表;
this.ListView1.DrawItem + =
新DrawListViewItemEventHandler(ListView1_DrawItem);
}
}
私人无效ListView1_DrawItem(对象发件人,DrawListViewItemEventArgs E)
{
}
解决方案
我会使用图形
对象立即从文件加载图像后添加边框:
![ug里的工程图什么去掉视图外的框框](https://p.xsw88.cn/allimgs/daicuo/20230906/1732.png)
修改:修改了code,这对我的作品......
私人无效TreeView1_Select(对象发件人,EventArgs的){
如果(文件夹= NULL和放大器;!&安培; System.IO.Directory.Exists(文件夹)){
DirectoryInfo的DIR =新的DirectoryInfo(@folder);
的foreach(在dir.GetFiles的FileInfo文件()){
图片IMG =新位图(Image.FromFile(file.FullName));
使用(图形G = Graphics.FromImage(IMG)){
g.DrawRectangle(Pens.Black,0,0,img.Width - 2,img.Height - 2);
}
imageList.Images.Add(IMG);
注意:图像复制的目的;如果我修改code到
图片IMG =(位图)Bitmap.FromFile(test.bmp);
作为评论的建议,我得到一个异常说图形对象不能从具有索引像素格式的图像创建。
On a treeview after the select event, I populate a listview with images. I want to custom format these images and place a black color border around each image.
private void TreeView1_Select(object sender, EventArgs e) {
if (folder != null && System.IO.Directory.Exists(folder)) {
DirectoryInfo dir = new DirectoryInfo(@folder);
foreach (FileInfo file in dir.GetFiles()) {
try {
imageList.Images.Add(Image.FromFile(file.FullName));
} catch {
Console.WriteLine("This is not an image file");
}
}
for (int j = 0; j < imageList.Images.Count; j++) {
this.ListView1.Items.Add("Item" + j);
this.ListView1.Items[j].ImageIndex = j;
}
this.ListView1.View = View.LargeIcon;
this.ListView1.LargeImageList = imageList;
this.ListView1.DrawItem +=
new DrawListViewItemEventHandler(ListView1_DrawItem);
}
}
private void ListView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
}
解决方案
I would add a border using a Graphics
object immediately after loading the images from file:
EDIT: modified the code, this works for me...
private void TreeView1_Select(object sender, EventArgs e) {
if (folder != null && System.IO.Directory.Exists(folder)) {
DirectoryInfo dir = new DirectoryInfo(@folder);
foreach (FileInfo file in dir.GetFiles()) {
Image img = new Bitmap(Image.FromFile(file.FullName));
using (Graphics g = Graphics.FromImage(img)){
g.DrawRectangle(Pens.Black, 0, 0, img.Width - 2, img.Height - 2);
}
imageList.Images.Add(img);
NOTE: the image copying is intended; if I modify the code to
Image img = (Bitmap)Bitmap.FromFile("test.bmp");
as suggested in the comments, I get an exception saying "A Graphics object cannot be created from an image that has an indexed pixel format."
相关推荐
最新文章