Разница в цвете между Vista и Win7 - PullRequest
1 голос
/ 04 марта 2011

Наличие индикатора в виде изображения, отображаемого в графическом окне просмотра. Индикатор может быть любого цвета, который выбирает пользователь, поэтому мы создали одно изображение с палитрой и изменили определенный цвет в палитре на тот, который пользователь выбирает, используя следующий код.

    /// <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 Ответ

1 голос
/ 06 марта 2011

Привет. Все, что мы сделали, - это вызов MakeTransparent. Мы перешли на использование прозрачного GIF, чтобы избежать этого вызова. Вероятно, следовало бы сделать это в первую очередь, поскольку в любом случае это более эффективно.

...