我有這樣的方法:如何在listBox中的特定情況下爲特定項目的文本着色?
private void batch_Resize(Image sourceImage,string oldfName, string sourceDirectory,string oldFileName)
{
Bitmap newImage = new Bitmap(512, 512);
using (Graphics gr = Graphics.FromImage(newImage))
{
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(sourceImage, new Rectangle(0, 0, newImage.Width, newImage.Height));
i = i + 1;
newImage.Save(@"d:\NewImages1\" + i.ToString("D6") + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
newImage.Save(@"d:\NewImages1\" + oldfName + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
string filesExit = sourceDirectory + "\\"+ oldfName + ".gif";
if (!File.Exists(filesExit))
{
newImage.Save(sourceDirectory + "\\" + oldfName + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
}
else
{
itemToColor = "File already exist and was not overwritten:";
listBox1.Invoke(new MethodInvoker(delegate { listBox1.Items.Add("File already exist and was not overwritten: " + oldfName); }));
}
}
if (newImage != null)
newImage.Dispose();
}
,我想以紅色顏色調用項:
listBox1.Invoke(new MethodInvoker(delegate { listBox1.Items.Add("File already exist and was not overwritten: " + oldfName); }));
我想以紅色顏色的文本:文件已經存在,並沒有被覆蓋:
我在設計器中將listbox1繪製模式更改爲OwnderDrawFixed 並添加了繪製項目事件。
在平局項事件我所做的:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
Graphics g = e.Graphics;
g.FillRectangle(new SolidBrush(Color.Olive), e.Bounds);
g.DrawString(itemToColor, e.Font, new SolidBrush(e.ForeColor), new PointF(e.Bounds.X, e.Bounds.Y));
}
itemToColor是在Form1全局字符串我認爲顏色的文字:
itemToColor = "File already exist and was not overwritten:";
listBox1.Invoke(new MethodInvoker(delegate { listBox1.Items.Add("File already exist and was not overwritten: " + oldfName); }));
但它不工作。
如何在紅色中只顯示Invoke中的文字?文件已存在且未被覆蓋: 因此,只有在出現的方法中出現該文件時纔會將其着色。
它是如何_Not working_?如果只有一個項目應該是不同的顏色,你將需要知道哪一個;你可以保留一個inices列表或設置標籤。如果只有一部分文本應該是紅色的,你將需要解析這些部分並對每個部分使用DrawString調用。 - 你可以使用e中的參數來知道您正在繪製哪個項目,但代碼必須適用於所有項目!對於正常的項目,你可以簡單地調用'e.DrawDefault();' – TaW 2014-12-04 10:03:34