vista和Win7之间的色差

时间:2011-03-04 08:30:25

标签: c# .net windows-7 colors windows-vista

以图像的形式显示一个显示在图形视口中的指示符。指标可以是用户选择的任何颜色,因此我们使用调色板创建单个图像,并使用以下代码将调色板中的特定颜色更改为用户选择的颜色。

    /// <summary>
    /// Copies the image and sets transparency and fill colour of the copy. The image is intended to be a simple filled shape such as a square
    /// with the inside all in one colour.
    /// </summary>
    /// <remarks>Assumes the fill colour to be changed is Red,
    /// black is the boundary colour and off white (RGB 233,233,233) is the colour to be made transparent</remarks>
    /// <param name="image"></param>
    /// <param name="fillColour"></param>
    /// <returns></returns>
    protected Bitmap CopyWithStyle(Bitmap image, Color fillColour)
    {
        ColorPalette selectionIndicatorPalette = image.Palette;

        int fillColourIndex = selectionIndicatorPalette.IndexOf(Color.Red);

        selectionIndicatorPalette.Entries[fillColourIndex] = fillColour;

        image.Palette = selectionIndicatorPalette;

        Bitmap tempImage = image;
        tempImage.MakeTransparent(transparentColour);
        return tempImage;
    }

说实话,我不确定这是否有点笨拙,而且有一些更聪明的方法,所以任何想法都会有所帮助。然而,主要问题是这似乎在Win7上工作正常,但在Vista和XP中颜色不会改变。谁看过这个吗。我发现一两篇文章表明他们之间的ARGB存在一些差异,但没有什么特别具体的。任何帮助都非常接受。

1 个答案:

答案 0 :(得分:1)

大家好我们已经把它钉在了MakeTransparent调用上。我们已更改为使用透明GIF来避免此调用。应该首先应该这样做,因为它更有效率。