Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизГлюк !!! Найти похожие ветки
← →
pika © (2005-01-07 19:12) [0]Всем добрый вечер, у меня одна проблемка , что-то не могу найти ошибку, суть моей задачи такова есть бмп файл котрый я загружаю в image1, а далее мне надо вырезать буквы из pbbw:Timage,(буквы у меня нулевого,т.е. черного цвета, а фон белого 256*256*256-1) и копирую в ris20:Timage; а далее мне нужно получить матрицу нулей и единиц 20х20, т.е. если form1.canvas.pixels[j+ris20.left,i+ris20.top]=0 then a[i,j]:=0 else a[i,j]:=1, но проблема у меня в другом когда по одному , т.е. каждый раз нажимая кнопку, он вырезает букву и выдает правильный результат, который я заношу в текстовый файл, а если я пишу так чтобы он выполнил хотя бы для 4 букв ту же самую процедуру , которая нормально работает , он начинает глючить, т.е. он записывает в файл одни единицы, т.е. как будто бы нет букв помогите пожалуйста разобраться, ниже привожу отрывок этой проги :)
{========================================================}
procedure copyfrompbbw;
var i,j,i1,j1:integer;
begin
form1.ris20.Picture.Bitmap.Height:=dwn-up;
form1.ris20.Picture.Bitmap.Width:=rght-lft;
// up,dwn,lft,rght- границы буквы
for i:=up to dwn do
for j:=lft to rght do
form1.ris20.Canvas.Pixels[j-lft,i-up]:=form1.pbbw.Picture.Bitmap.Canvas.Pixels[j,i];
end;
{========================================================}
procedure clean;
var q,w:integer;
begin
// это процедура после того как мы скопировали в ris20
//очищает тот квадрат где буква
for q:=up to dwn do
for w:=lft to rght do
form1.pbbw.Picture.Bitmap.Canvas.Pixels[w,q]:=65536*256-1;
end;
{========================================================}
procedure TForm1.nextClick(Sender: TObject);
var i,j:integer;name:string;txt:textfile;
begin
updwn;
lftrght;
copyfrompbbw;
inc(_file_n_);
name:=inttostr(_file_n_)+".txt";
assignfile(txt,name);
rewrite(txt);
for i:=1 to 20 do
begin
for j:=1 to 20 do
if form1.Canvas.Pixels[ris20.Left+j-1,ris20.Top+i-1]=0 then write(txt,"0")else write(txt,"1");
writeln(txt);
end;
closefile(txt);
clean;
end;
← →
pika © (2005-01-07 23:52) [1]Посмотрите пожалуиста , что здесь за глюк !!!
← →
Kerk © (2005-01-08 00:22) [2]
> if form1.Canvas.Pixels[ris20.Left+j-1,ris20.Top+i-1]=0
> then write(txt,"0")else write(txt,"1");
может стоит заменить наif ris20.Canvas.Pixels[j-1,i-1]=0 then write(txt,"0")else write(txt,"1");
а то совсем странно выглядит.
← →
pika © (2005-01-08 00:27) [3]>Kerk
Ты прав, но тогда у меня не получается матрица 20х20 , а тм ris20 у меня размерности 20х20 и .stretch:=true;,а с формы.канва получаю цвета пискелов !!!
← →
Gero © (2005-01-08 00:28) [4]
> pika ©
Ужасный код.
← →
Kerk © (2005-01-08 00:29) [5]
> Ты прав, но тогда у меня не получается матрица 20х20 ,
> а тм ris20 у меня размерности 20х20 и
> .stretch:=true;,а с формы.канва получаю цвета пискелов
> !!!
Это ужасно криво.. может поэтому и не работает.
← →
Kerk © (2005-01-08 00:31) [6]И обязательно чтоль на форму выводить? В памяти храни и масштабируй TBitmap.
← →
pika © (2005-01-08 00:38) [7]Дело втом что те буквы которые я вырезаю из pbbw:Timage они будут иметь разные размерности , и поэтому то что вырезал я заганяю в ris20:Timage; ris20.stretch:=true; и моя буква полностью отображается, а уже с формы беру эту букву по пикселам, но самое интересное -оно работает но только когда по одному(т.е при каждом нажатии кнопки button1;)а в цикле уже не работает :)
← →
pika © (2005-01-08 00:40) [8]Не умею масштабировать, я уже спрашивал никто нормально не ответил, только один, но он говорил об усреднении цвета , но это здесь кажется абсолютно не нужно , если знаешь подскажи пожалуиста :)
← →
Kerk © (2005-01-08 00:45) [9]
TCanvas.StretchDraw ?
StretchBlt ?
← →
pika © (2005-01-08 00:48) [10]>Kerk
Завтра посмотрю -устал, но кажется ты прав, а я пошел потрепаться :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c