Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Антиалиазинг или операция Fast :), сгладиваю картинку, тока бистро .. бьюся 
:(
    Опции темы
slash26
  Дата 14.11.2005, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.11.2005

Репутация: нет
Всего: нет



народ, я что-то начертал похожее на мою задумку
Антиалиазинга:

Код

 Graphics::TBitmap *big_bmp = new Graphics::TBitmap(); 
 Graphics::TBitmap *out_bmp = new Graphics::TBitmap(); 
 Graphics::TBitmap *orig_bmp = new Graphics::TBitmap(); 
 orig_bmp->LoadFromFile(ExtractFilePath(Application->ExeName) + "\\b.bmp"); 

 big_bmp->Width = (orig_bmp->Width); 
 big_bmp->Height = (orig_bmp->Height); 
 big_bmp->Canvas->StretchDraw(big_bmp->Canvas->ClipRect,orig_bmp); 
 out_bmp->Width = orig_bmp->Width; 
 out_bmp->Height = orig_bmp->Height; 
 out_bmp->PixelFormat = pf24bit; 
 big_bmp->PixelFormat = pf24bit; 
 orig_bmp->PixelFormat = pf24bit; 
 int x, y, cx, cy; 
 int totr, totg, totb; 
 Byte *Row1, *Row2, *Row3, *Row4, *DestRow; 
 int i; 
 try // вот не до конца в этих своих закопках понял про Line Count :)
 { 
 for(y = 0; y <= orig_bmp->Height-1; y++) 
 { 
   cy = y*4; 
   Row1 = (Byte *)big_bmp->ScanLine[cy]; 
   Row2 = (Byte *)big_bmp->ScanLine[cy+1]; 
   Row3 = (Byte *)big_bmp->ScanLine[cy+2]; 
   Row4 = (Byte *)big_bmp->ScanLine[cy+3]; 
   DestRow = (Byte *)out_bmp->ScanLine[y]; 

   for(x = 0; x <= orig_bmp->Width-1; x++) 
   { 
   cx = 4*x; 

     totr = 0; 
     totg = 0; 
     totb = 0; 

     for( i = 0; i <= 3; i++) 
     { 
       totr += GetRValue(Row1[cx + i]) 
            + GetRValue(Row2[cx + i]) 
            + GetRValue(Row3[cx + i]) 
            + GetRValue(Row4[cx + i]); 
       totg += GetGValue(Row1[cx + i]) 
            + GetGValue(Row2[cx + i]) 
            + GetGValue(Row3[cx + i]) 
            + GetGValue(Row4[cx + i]); 
       totb += GetBValue(Row1[cx + i]) 
            + GetBValue(Row2[cx + i]) 
            + GetBValue(Row3[cx + i]) 
            + GetBValue(Row4[cx + i]); 
     } 
     DestRow[x] = RGB(totr / 16,totg / 16,totb / 16); 
   } 
 } 

 } 
 catch(...) {}  // думаете для чего он сволочь тут?
 Canvas->Draw(0,0,out_bmp); 


я тут что-то недодумал с количеством ScanLine
и почему-то цвет вертикальных линий получается зеленоватым, вместо черного!
мож кто свежым взглядом провьювит?

вот выкладываю данный сэмпл в сорце C++Builder
(прикреплен файл)

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  canvas.zip 26,37 Kb
PM MAIL   Вверх
slash26
Дата 15.11.2005, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.11.2005

Репутация: нет
Всего: нет



не..ну.. никто низнает что ли ..
никто никогда не работал с алгоритмами...
вот он текст, вот он Исходник!
smile

что ж никто даже не поглядел блин!
?

Где ж те обещаные самые лучшие специалисты-программисты!?
))))))))))
PM MAIL   Вверх
slash26
Дата 15.11.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.11.2005

Репутация: нет
Всего: нет



Проблема решена.
Всем спасибо!

smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1170 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.