На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> На КПК неправильно считывается цвет , C# CF2.0
    ExpandedWrap disabled
      Bitmap tmpimg;
      tmpimg=new Bitmap(100, 100);
      Color col = Color.FromArgb(220656);
      tmpimg.SetPixel(0, 0, col);
      int z = tmpimg.GetPixel(0, 0).ToArgb();
      MessageBox.Show(z.ToString());


    Выводит не "220656", а "-16753424"

    Может дело в том, что у КПК цветность - 65000 цветов?

    Как тогда мне цвет точки н абитмапе узнать???

    Добавлено
    В догонку пробую цвета ARGB
    Вставляю | Выводит число
    440100 | -16731104 (одинаковые)
    440101 | -16731104
    440102 | -16731104
    440103 | -16731104
    440104 | -16731096 (!!! изменилось)

    0 | -16777216
    10 | -16777208
    30 | -16777192
    60 | -16777160
    100 | -16777120

    Добавлено
    Делаю так:
    ExpandedWrap disabled
                  Color col = Color.FromArgb(111, 222, 123);
                  tmpimg.SetPixel(0, 0, col);
                  col = tmpimg.GetPixel(0, 0);
                  MessageBox.Show(col.R+"-"+col.G+"-"+col.B);


    Эта скотина показывает вот что
    104-220-120
      У тебя шеснадцатибитный цвет в формате 565. Так, что вроде все правильно, попробуй создай изображение в формате 565 (tmpimg=new Bitmap(100, 100, PixelFormat.Format16bppRgb565); и на обычной машине начнет выдавать "не правильно".

      Добавлено
      Цитата Slukad @
      Эта скотина показывает вот что
      104-220-120

      Он не скотина :) Он выбрал самый близкий эквивалент :)

      Прикинь сам, что вместо 256 значений составляющая R может принять теперь только 32 значения, G = 64, B только 32 значения.

      P.S. Для КПК (возьмем твой пример) в диапазоне R (104 - 112) один и тот же цвет.То же самое и с зеленым только там от 220 - 224 и с синим 120 - 128. Он всегда берет нижнюю границу интервала в который попадает цвет.
      Сообщение отредактировано: juice -
        Ок. Bitmap этот у меня для Color Select идентификации, т.е. на экран не выводится. Т.е. мне совершенно почигу что там будет нарисовано. Но делать его как массив int[][] 240*294 не хочу - Graphics тогда его не заполнит. А на нем нужно именно рисовать.
        Можно ли сделать Bitmap в обычном формате, чтобы r=255,b=255, g=255 было?

        Добавлено
        Все равно он скотина )
          Цитата Slukad @
          Можно ли сделать Bitmap в обычном формате, чтобы r=255,b=255, g=255 было?

          По логике так: Bitmap bitmap = new Bitmap(100, 100, PixelFormat.Format32bppArgb);
            Совет: если GetPixel используется часто, используй вместо него LockBits, если конечно в CF это есть.. Производительность вырастет в разы.
              Красиво, но не помогло. Спасибо
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0293 ]   [ 15 queries used ]   [ Generated: 16.07.25, 16:41 GMT ]