Помощь - Поиск - Пользователи - Календарь
Полная версия: Определение цвета пикселя
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Xineger
Граждане обитатели форума, возник вопрос один к Вам. Ничего подобного на форуме нет, так что решил создать новую тему. Итак.
Допустим, вывел я на экран bmp-шку. И очень надо определить цвет каждого пикселя на экране. Как это сделать? И можно ли потом этот пиксель перекрасить, не меняя всего рисунка?
Модуль для просмотра bmp взят тут же, http://pascal.dax.ru/forum/index.php?act=A...e=post&id=14456 если быть точным.
volvo
Хочешь определить цвет пикселя -
Color:=GetPixel(x, y);


Изменить:
PutPixel(x, y, Color);


Значения x, y - типа Integer; Color - Word...
GoodWind
а если асмом то вот так:

Код
Function getpixel(x,y : integer):byte;
begin
asm
 mov ax,y
 mov bx,ax
 shl ax,8
 shl bx,6
 add bx,ax
 add bx,x
 mov ax,0a000h
 mov es,ax
 mov al,es:[bx]
 mov @result,al
end;
end;


поставить точку:

Код
procedure putpixel(x,y : integer;color : byte); assembler;
asm
 pusha
 mov ax,y
 mov bx,ax
 shl ax,8
 shl bx,6
 add bx,ax
 add bx,x
 mov ax,0a000h
 mov es,ax
 mov al,color
 mov es:[bx],al
 popa
end;
GoodWind
[offtop]
а зачем bmp-шник выводил, если не секрет ?
просто интересно
[/offtop]
Altair
Кстати второй рисунок вывести не выйдет на экран одновременно с первым.
Палитра первого рисунка изменится!
Xineger
За ответы всем спасибо. БМПшку выводил в качестве лого,и захотелось над ней извращнуться маленько. То бишь применить к ней какие-нибудь эффекты.
GoodWind
вот так и я начинал....
посмотрите, что из меня вышло.... ужас ! lol.gif
Altair
кошмар! lol.gif
BlackShadow
GoodWind, не катит при VGA-режимах sad.gif
GoodWind
Цитата
GoodWind, не катит при VGA-режимах

знаю, зато в 13h mode всё ОК
GoodWind
для тех кто не знает, как войти в 13h:

procedeure goto13h;assembler;
asm
mov ax,$13;
int 10h
end;


так вроде, BlackShadow, поправь ежели не так
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.