Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Глюк !!!   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
1-1104963530
vizbor84
2005-01-06 01:18
2005.01.23
Почему отображается ???? вместо того что я ввожу?


3-1103528250
Iova
2004-12-20 10:37
2005.01.23
Какое поле в таблице является первичным ключом


1-1105485353
chir
2005-01-12 02:15
2005.01.23
Запретить снятие фокуса


1-1105358199
Anonimus
2005-01-10 14:56
2005.01.23
Соответствие имени файла заданой маске


4-1102162206
caha
2004-12-04 15:10
2005.01.23
CD-ROM