Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.062 c
14-1103511545
VMcL
2004-12-20 05:59
2005.01.23
Забавные пристрастия программистов VB


1-1105359653
Scorpio
2005-01-10 15:20
2005.01.23
Как в поле MEMO добавить запись


1-1104777225
starling13
2005-01-03 21:33
2005.01.23
Сортировка в ListView


14-1104576205
Alex_S
2005-01-01 13:43
2005.01.23
Чудеса с Лексиконом. (История прошлого века)


1-1105273913
Zahar
2005-01-09 15:31
2005.01.23
помогите с разобраться с потоками





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский