![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с битовыми образами [D2005, XP]
De1uxe © (2005-12-12 13:55:00)Уважаемые мастера помогите пожалуйста! Возникла необходимость заставить программу проверять битовый образ на наличие закрашенных черным цветом пикселей. А затем выдавать их(закрашеных пикселей) кооринаты. Как это осуществить?
Джо (2005-12-12 15:39:00) [1]
> [12] De1uxe © (12.12.05 15:36)
> Дело в том что у меня Help в delphi ужасный и я так ничего
> и не нашел там ничего по поводу ScanLine, Height example.
Какой-такой "ужасный"? Его что, для тебя отдельно такой написали? ;)
ScanLine, Height example
procedure TForm1.Button1Click(Sender: TObject);
// This example shows drawing directly to the BitMap
var
x,y : Integer;
BitMap : TBitMap;
P : PByteArray;
begin
BitMap := TBitMap.create;
try
BitMap.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp');
for y := 0 to BitMap.Height -1 do
begin
P := BitMap.ScanLine[y];
for x := 0 to BitMap.Width -1 do
P[x] := y;
end;
Canvas.Draw(0,0,BitMap);
finally
BitMap.Free;
end;
end;
De1uxe (2005-12-12 15:36:00) [2]Дело в том что у меня Help в delphi ужасный и я так ничего и не нашел там ничего по поводу ScanLine, Height example.
MBo (2005-12-12 15:33:00) [3]>De1uxe
Ты читаешь, что тебе советуют?
De1uxe (2005-12-12 15:20:00) [4]Вот чего я набрал:
var
bitmap1: tbitmap;
i,q,x,y: integer;
z,c:string;
begin
bitmap1.Create;
bitmap1.LoadFromFile('c:\test1\1.bmp');
for i:=1 to bitmap1.Height do
begin
for q:=1 to bitmap1.Width do
begin
if getpixel(bitmap1.Handle, q,i)=0 then
begin
x:=q;
y:=i;
end;
end;
end;
z:=intTostr(x);
c:=intTostr(y);
label1.Caption:=('Координата Х:'+z+' Координата Y:'+c)
end;
но почему-то не работает. Кто подскажет почему? В указанной папке есть картинка 1.bmp на которой всего одна точка черного цвета.
при нажатии на кнопку он выдает ошибку типа:
project project.exe raised exception class EAccessViolation with message...
de1uxe (2005-12-12 14:51:00) [5]при нажатии на кнопку он выдает ошибку типа:
project project.exe raised exception class EAccessViolation with message...
Leonid Troyanovsky (2005-12-12 14:51:00) [6]
> de1uxe © (12.12.05 14:45) [7]
> Честно говоря непонял. Что такое
> > VCL Reference: ScanLine, Height example
F1 - Find - ScanLine, Height example.
--
Regards, LVT.
de1uxe (2005-12-12 14:45:00) [7]Честно говоря непонял. Что такое
> VCL Reference: ScanLine, Height example
?
MBo (2005-12-12 14:44:00) [8]>for i:=1 to bitmap1.Height
от нуля до bitmap1.Height -1
и с шириной аналогично
Leonid Troyanovsky (2005-12-12 14:41:00) [9]
> de1uxe © (12.12.05 14:35) [4]
> Вот чего я набрал:
VCL Reference: ScanLine, Height example
--
Regards, LVT.
de1uxe (2005-12-12 14:35:00) [10]Вот чего я набрал:
var
bitmap1: tbitmap;
i,q,x,y: integer;
z,c:string;
begin
bitmap1.Create;
bitmap1.LoadFromFile('c:\test1\1.bmp');
for i:=1 to bitmap1.Height do
begin
for q:=1 to bitmap1.Width do
begin
if getpixel(bitmap1.Handle, q,i)=0 then
begin
x:=q;
y:=i;
end;
end;
end;
z:=intTostr(x);
c:=intTostr(y);
label1.Caption:=('Координата Х:'+z+' Координата Y:'+c)
end;
но почему-то не работает. Кто подскажет почему? В указанной папке есть картинка 1.bmp на которой всего одна точка черного цвета.
Игорь Шевченко (2005-12-12 14:12:00) [11]
> А где указывается цвет?
0 - черный
de1uxe (2005-12-12 14:04:00) [12]А где указывается цвет?
Игорь Шевченко (2005-12-12 14:00:00) [13]GetPixel (Bitmap.Handle, X, Y) = 0 ?