Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
1

вопрос по if

23.07.2011, 03:00. Показов 869. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ничё не пойму...

есть код такой вот

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
var
  Form1: TForm1;
  Bitmap: TBitmap;
 
procedure TForm1.Button1Click(Sender: TObject);
type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  x, y: Integer;
  Dest: pRGB;
begin
  Bitmap := TBitmap.Create;
  Bitmap.LoadfromFile('1.bmp');
  Bitmap.PixelFormat := pf24Bit;
  for y := 0 to Bitmap.Height - 1 do
    begin
       Dest := Bitmap.ScanLine[y];
          for x := 0 to Bitmap.Width - 1 do
            begin
               with Dest^ do
                  begin
                    if (R<>255) and (G<>255) and (B<>255) then
                       begin
                          //тут любой код
                       end;
 
                  end;
               Inc(Dest);
            end;
    end;
 
 With Image1.Picture.bitmap do
  Begin
    Width:=Bitmap.Width;
    height:=Bitmap.Height;
    Palette:=Bitmap.Palette;
    Canvas.draw(0,0,bitmap);
    Refresh;
  end;
 
 
end;
Вот если написать условие что

Delphi
1
2
3
4
if (R<>255) and (G<>255) and (B<>255) then
 begin
     //тут любой код
 end;
То если у меня цвет изображения состоит из 3 цветов чёрного, белого и жёлтого
чёрный цвет записывается а жёлтый нет...

А если написать так

Delphi
1
2
3
4
if R+G+B<>765 then
 begin
     //тут любой код
 end;
То все цвета кроме белого записываются и делается всё как надо...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2011, 03:00
Ответы с готовыми решениями:

Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves)
Есть набор форм, назовём их 'интерфейсными'. Есть отдельная форма, назовём её 'хранилищем'. Сама...

[ВОПРОС]: Меню и вопрос при регистрации
Помогите пожалуйста. У меня vbulletin 4.0.7 и после установки в верхнем меню есть лишняя навигация....

Вопрос о картинках, вопрос о формулах
Всем доброго времени суток! Как обычно глупые вопросы... Вопрос первый, с сайта копируется...

Вопрос по массивав, "институтский" вопрос.
Готовлюсь к летней сессии по программированию. С++ Есть такая вот задачка (привожу как есть) ...

6
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
23.07.2011, 05:07 2
Цитата Сообщение от Arriba Посмотреть сообщение
Delphi
1
2
3
4
if (R<>255) and (G<>255) and (B<>255) then
 begin
     //тут любой код
 end;
Попробуй в скобки общие взять:
Delphi
1
2
3
4
if ((R<>255) and (G<>255) and (B<>255)) then
 begin
     //тут любой код
 end;
Может поможет
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
23.07.2011, 07:34 3
Может так
Delphi
1
if (R<>255) or (G<>255) or (B<>255) then//как я понял в сумме не должно быть 765
Добавлено через 55 секунд
Цитата Сообщение от HyperZen Посмотреть сообщение
Попробуй в скобки общие взять:
А что только в одни? Давай сразу в 10 пар скобок...
1
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
23.07.2011, 11:35  [ТС] 4
Delphi
1
if (R<>255) or (G<>255) or (B<>255) then
работает, тут условие такое RGB - это 3 составляющие цвета, нужно было отсеить из всей цветовой палитры только один (тут 255 255 255 - белый цвет) конкретный цвет...

Всё дошло почему и нельзя использовать... Ньдя ночь она и есть ночь.
Минут 20 наверное мучился, условия всё вставлял...
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
23.07.2011, 11:53 5
Цитата Сообщение от Arriba Посмотреть сообщение
нужно было отсеить из всей цветовой палитры только один (тут 255 255 255 - белый цвет) конкретный цвет
Для этого такое условие подходит:
Delphi
1
if not ( (R=255) and (G=255) and (B=255) ) then
0
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
24.07.2011, 09:06 6
Объяви Dest так
Delphi
1
2
3
4
5
6
7
8
type
  TBGRA=record
        case integer of
        0: (B,G,R,A: Byte);
        1: (color:   dword);
        end;
var
  Dest: ^TBGRA;
Установи соответствующий формат
Delphi
1
Bitmap.PixelFormat:=pf32bit;
Теперь условие можно переписать так
Delphi
1
if Dest^.Color<>$FFFFFF then
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.07.2011, 11:33 7
murderer, только поле TBGRA.A надо в младших адресах разместить:
Delphi
1
2
3
4
5
6
type
  TBGRA=record
        case integer of
        0: (A,B,G,R: Byte);
        1: (color:   dword);
        end;
0
24.07.2011, 11:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2011, 11:33
Помогаю со студенческими работами здесь

вопрос
пытаюсь попасть к себе на сайт. по адресу www.site.ru предлагается закачка страницы. отказываюсь,...

Вопрос
Здравствуйте. Реально ли продвинуть в TOP сайт (по СЧ и ВЧ),построенный на одних редиректах?...

Вопрос на С/C++
Подскажите! Смотрел много обучалок - не помогло. Все равно не пашет. Есть такая тема typedef...

Вопрос по Qt
Когда компилирую код в Qt creator - все проходит нормально, запускается и работает... Потом если...

Вопрос
Здравствуйте. 6.04 у моего сайта было 200 бэков, а сегодня после проверки их оказалось 78. Что...

Вопрос
Собстна недавно изучаю ПХП И MySQL и возник такой вопрос: что означают следующие функции???Никак не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru