Главная страница
    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.045 c
3-1103554933
alex145
2004-12-20 18:02
2005.01.23
FoxPro


14-1105112746
vecna
2005-01-07 18:45
2005.01.23
Рождество.... духи....


3-1103275599
RRA
2004-12-17 12:26
2005.01.23
Использование LIKE при формировании SQL запроса


1-1105352097
ODINUS
2005-01-10 13:14
2005.01.23
Rave


14-1104590288
AlterEgo of WondeRu
2005-01-01 17:38
2005.01.23
Чего бы Вы хотели достичь в 2005 году...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский