2016/07/11(Mon) 13:46:15 編集(投稿者)
今使える開発環境が超古い VS2005 だけなので Form でしか試していませんが
TextRenderer.DrawText に PathEllipsis でもできました。
サンプルが必要な人のために2つを掲載しておきましょう。
----Form1.cs----
private void Form1_Paint(object sender, PaintEventArgs e)
{
TextRenderer.DrawText(e.Graphics, @"<長いPath>", this.Font,
new Rectangle(10, 10, 200, 20), Color.Black, Color.SteelBlue, TextFormatFlags.PathEllipsis);
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = PathCompactEx.Converter.EllipsisCompactor(@"<長いPath>", 32);
}
----PathCompactEx.cs----
using System.Runtime.InteropServices; // DllImport
namespace PathCompactEx
{
public static class Converter
{
[DllImport("shlwapi.dll", CallingConvention = CallingConvention.StdCall, CharSet = Charset.Unicode)]
extern static bool PathCompactPathExW([Out] System.Text.StringBuilder ResultPath,
System.Text SourcePath, int HowManyLetters, int Delimiter);
public static System.String EllipsisCompactor(System.String Path, Int16 HowManyLetters)
{
System.Text.StringBuilder b = new System.Text.StringBuilder(HowManyLetters + 1);
PathCompactPathExW(b, Path, HowManyLetters + 1, '\\');
return b.ToString();
}
}
}
オイラ的にはかなり解決済みに近いのですが WPF でどうなるか検証し切れていないのが心残りっす。
とりあえずチェック無しにしておきます。