关于c#中加载图片路径的代码。前10行没看懂是如何确定图片路径的,求详细解答

本实例目的是制作一个imagelist控件,有两个按钮,一个点击显示第一张图,一个点击显示第二张图。privatevoidForm1_Load(objectsender,... 本实例目的是制作一个imagelist控件, 有两个按钮,一个点击显示第一张图,一个点击显示第二张图。

private void Form1_Load(object sender, EventArgs e)
{
string Path = Application.StartupPath.Substring(0,Application.StartupPath.Substring(0,Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\")); //设置要加载图片的路径
Path += @"\01.jpg";
string Path2 = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0, Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));
Path2 += @"\02.jpg"; //@是什么意思啊
Image Ming = Image.FromFile(Path,true);
imageList1.Images.Add(Ming);
Image Ming2 = Image.FromFile(Path2,true);
imageList1.Images.Add(Ming2);
imageList1.ImageSize = new Size(200,165);
pictureBox1.Width = 200;
pictureBox1.Height = 165;
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Image = imageList1.Images[0];
}
private void button2_Click(object sender, EventArgs e)
{
pictureBox1.Image = imageList1.Images[1];
}
展开
 我来答
syht2000
高粉答主

推荐于2016-01-31 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

@的意思是忽略字符中的转义符,举个例子,比如有路径是c:\temp\123.txt,就不能直接写成

string str="c:\temp\123.txt";

这样编译时就会报错,因为它以为你是要转义,而不是要\这个字符,所以要写成

string str="c:\\temp\\123.txt";

或者是

string str=@"c:\temp\123.txt";


至于string Path = Application.StartupPath.Substring(0,Application.StartupPath.Substring(0,Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));
是取当前运行的exe所在目录的上两级目录的位置,比如说当前的程序的exe在

c:\temp\abc\123\sample.exe

用上面的就会取到c:\temp

其实完全没必要这么写,因为上级目录是可以用..表示的,所以这句实际上相当于

string Path=Application.StartupPath + @"\..\..";

至于Substring以及LastIndexOf都是基础的c#语法,没什么好说的,自己查查就知道了。

原代码有太多没用的重复部分,改动过后代码

private void Form1_Load(object sender, EventArgs e)
        {
            string home=Application.StartupPath + @"\..\..";   //设置要加载图片的路径
            string file1 =home+ @"\01.jpg";
            string file2=home+ @"\02.jpg"; 
            imageList1.Images.Add(Image.FromFile(file1,true));
             imageList1.Images.Add(Image.FromFile(file2,true));           
            imageList1.ImageSize = new Size(200,165);
            pictureBox1.Width = 200;
            pictureBox1.Height = 165;
        }
哲事姓无
2014-07-20 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:445万
展开全部

就是返回程序启动目录的上二层目录,但是写的相当的复杂而且不安全,如果路径只有一层,那就异常了。

 var path的上层路径 = path.Substring(0, path.LastIndexOf("\\"));

那么 

Application.StartupPath.Substring(0, Application.StartupPath.Substring(0, Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\")) 

是嵌套调用了2次

展开效果如下

var 启动目录 = Application.StartupPath;

var 启动目录上层目录 = 启动目录.Substring(0, 启动目录.LastIndexOf("\\"));

var 启动目录上层目录的上层目录 = 启动目录.Substring(0, 启动目录上层目录.LastIndexOf("\\"));

var Path = 启动目录上层目录的上层目录;

象下面这调用上层目录会安全一些 

/// <summary>
    /// 返回指定目录的上一层目录路径,如果不存在返回null
    /// </summary>
    public static string GetParentDirctory(string dirctory)
    {
        var directoryInfo = Directory.GetParent(dirctory);
        if (directoryInfo != null)
        {
            return directoryInfo.FullName;
        }
        else
        {
            return null;
        }
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tonalilili
2014-07-20 · TA获得超过1.6万个赞
知道大有可为答主
回答量:8050
采纳率:71%
帮助的人:3094万
展开全部
呵呵,我还没看到后面的内容。
但是我知道 @的意思。
@后面的代码里不会进行转义。
因为读取目录 会有个斜杠 \ ,但平时这个 \ 是表示转义的
比如string str1="C:\a\b\n";这样的话是无法进入n目录的,因为\n会转义,当成换行处理。
string str1=@"C:\a\b\n";这样的话就进入n目录的,@表示不它后面的代码不进行转义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-20
展开全部
看见口岸这份凤凰股份v那地方被等风波
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式