Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
_Мика_
-
- Гуру

-
-
- Сообщения: 1459
- Зарегистрирован: 24.10.2003 (Пт) 15:05
- Откуда: г. Москва, м.Речной вокзал
-
_Мика_ » 17.05.2004 (Пн) 18:20
Как картинку проеобпрозовать в 8 bit т.е. 256 цветов
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!
-
TEH3OP
-
- Продвинутый пользователь

-
-
- Сообщения: 143
- Зарегистрирован: 12.12.2003 (Пт) 20:19
- Откуда: Москва
TEH3OP » 17.05.2004 (Пн) 23:18
_Мика_ писал(а):Как картинку проеобпрозовать в 8 bit т.е. 256 цветов
Хех... ну можно попробовать просто поковырять палитру и пиксельные данные вручную. Получится прикольная пробежка по двум массивам.
Ты про
DIB осведомлён?
Можно почитать в
MSDN "Bitmap function"или Эпплмана.
-
_Мика_
-
- Гуру

-
-
- Сообщения: 1459
- Зарегистрирован: 24.10.2003 (Пт) 15:05
- Откуда: г. Москва, м.Речной вокзал
-
_Мика_ » 18.05.2004 (Вт) 13:11
Да так

........
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!
-
Urvin
-
- Постоялец

-

-
- Сообщения: 518
- Зарегистрирован: 04.06.2003 (Ср) 10:47
- Откуда: с Марса
-
Urvin » 18.05.2004 (Вт) 20:08
1. Делаем массив - палитру из нужных цветов.
2. Устанавливаем цикл по каждой точке на проверку близости к палитре.
3. Код для дельфей (басика не нашел)
- Код: Выделить всё
function FindColor(const c: integer):integer;
var
r: integer;
g: integer;
b: integer;
n: integer;
num: integer;
test: integer;
begin
r:= getRValue(c);
g:= getGValue(c);
b:= getBValue(c);
test:= 1000;
for n:= 0 to 255 do begin
if (abs(getRValue(ColourPalette[n]) - r) + abs(getGValue(ColourPalette[n]) - g) + abs(getBValue(ColourPalette[n]) - b)) < test then begin
test:= abs(getRValue(ColourPalette[n]) - r) + abs(getGValue(ColourPalette[n]) - g) + abs(getBValue(ColourPalette[n]) - b);
num:=n;
end;
end;
result:=ColourPalette[num];
end;
procedure TfrmMain.btnUsePaletteClick(Sender: TObject);
var
x: integer;
y: integer;
pic1: TBitmap;
pic2: TBitmap;
begin
try
pic1:= tbitmap.Create;
pic2:= tbitmap.Create;
finally
pic1.LoadFromFile('in.bmp');
pic2.LoadFromFile('in.bmp');
for y := 0 to pic1.Height do begin
for x := 0 to pic1.Width do begin
pic2.Canvas.Pixels[x,y]:=findcolor(pic1.Canvas.Pixels[x,y]);
end;
end;
picpic.Canvas.Draw(0,0,pic2);
end;
pic1.Free;
pic2.Free;
end;
Не так страшен русский танк, как его пьяный экипаж
-
_Мика_
-
- Гуру

-
-
- Сообщения: 1459
- Зарегистрирован: 24.10.2003 (Пт) 15:05
- Откуда: г. Москва, м.Речной вокзал
-
_Мика_ » 18.05.2004 (Вт) 21:10
Спасибо!! ща буду разбираться
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 3