Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамический массив записей [D7, XP]


Страницы:   1 2

+++vist+++ ©   (2008-08-19 22:46:00) 

Подскажите, как правильно вывести на холст TImage динамический массив записей!

Идея - программа обработки изображения. С исходного изображения считывается матрица записей

type TMatrix = record
red: byte;
green: byte;
blue: byte;
end;

Потом она обрабатывается по определенному алгоритму и снова выводится на холст TImage. Массив динамический, формируется в зависимости от размеров изображения. Вывожу пискели на холст вот таким способом:

FormLoadImage.Image.Picture.Bitmap.Canvas.Pixels[i, j] := RGB(Unit1.image_matrix[i, j].red, Unit1.image_matrix[i, j].green, Unit1.image_matrix[i, j].blue);

Выдается сообщение "Missing operator or a semicolon", хотя ничего там не прощуено...

Самое интересное то, что в случае использования статического массива такое обращение работает нормально!

Подскажите, в чем может быть ошибка?


Vlad Oshin   (2008-08-20 13:32:00) [21]

ну так чего было?
что помогло?
интересно, потому что ошибка тупая, мало ли что, на будующее


brother   (2008-08-20 12:15:00) [22]

> Нет ни малейшего желания!

а на вопросы хочешь конструктивные ответы?


+++vist+++   (2008-08-20 12:14:00) [23]


> Хочешь об этом поговорить?


Нет ни малейшего желания!


Vlad Oshin   (2008-08-20 12:00:00) [24]


> Delphi  попробовать перегрузить

попробовать :)


Anatoly Podgoretsky   (2008-08-20 12:00:00) [25]

> +++vist+++  (20.08.2008 11:17:08)  [8]

> Я идиот по Вашему?

Хочешь об этом поговорить?


+++vist+++   (2008-08-20 11:49:00) [26]


> а если так?
>
> FormLoadImage.Image.Picture.Bitmap.Canvas.Pixels[i, j] :
> =
> TColor (
> RGB(Unit1.image_matrix[i, j].red, Unit1.image_matrix[i,
> j].green, Unit1.image_matrix[i, j].blue)
> )
> ;
>


Ок, щас попробую!


Vlad Oshin   (2008-08-20 11:33:00) [27]

еще можно Delphi  попробовать перегрузить


Vlad Oshin   (2008-08-20 11:30:00) [28]

а если так?

FormLoadImage.Image.Picture.Bitmap.Canvas.Pixels[i, j] :=
TColor (
RGB(Unit1.image_matrix[i, j].red, Unit1.image_matrix[i, j].green, Unit1.image_matrix[i, j].blue)
)
;


+++vist+++   (2008-08-20 11:17:00) [29]


> Надо еще выше, нужно видеть хоть одну строку с ;


Я идиот по Вашему? Есть там все точки с запятыми! Видимо, обращение неправильно написано!


brother   (2008-08-20 04:44:00) [30]

где то я уже слышал о работе с картинками в RGB варианте ;) дежавю?))))))
зы [5] самое оно для автора...


Anatoly Podgoretsky   (2008-08-20 01:24:00) [31]


> А выше цикл вывода:

Надо еще выше, нужно видеть хоть одну строку с ;


Amoeba   (2008-08-19 23:59:00) [32]


> type TMatrix = record
> red: byte;
> green: byte;
> blue: byte;
> end;

А теперь заглянем в модуль Windows:

 PRGBTriple = ^TRGBTriple;
 {$EXTERNALSYM tagRGBTRIPLE}
 tagRGBTRIPLE = packed record
   rgbtBlue: Byte;
   rgbtGreen: Byte;
   rgbtRed: Byte;
 end;
 TRGBTriple = tagRGBTRIPLE;
 {$EXTERNALSYM RGBTRIPLE}
 RGBTRIPLE = tagRGBTRIPLE;


И еще советую последовать совету:

> DVM ©   (19.08.08 23:33) [4]
>
>
> > +++vist+++
>
> очень советую почитать про Scanline


Если использовать "стандартный" тип TRGBTriple то код при использовании обращения через Scanline будет очень простым.


DVM   (2008-08-19 23:33:00) [33]


> +++vist+++

очень советую почитать про Scanline


+++vist+++   (2008-08-19 23:11:00) [34]


> image_matrix чаво такое?


Image_matrix - это динамический массив записей. Копия изображения в памяти.


> А выше?


А выше цикл вывода:

for i := 0 to FormLoadImage.Image.Picture.Bitmap.Width - DECREASE do
  begin
  for j := 0 to FormLoadImage.Image.Picture.Bitmap.Height - DECREASE do
     begin
     FormLoadImage.Image.Picture.Bitmap.Canvas.Pixels[i, j] := RGB(Unit1.image_matrix[i, j].red, Unit1.image_matrix[i, j].green, Unit1.image_matrix[i, j].blue);
     end;
  end;

DECREASE - это константа. Были проблемы с попаданием в границы изображения. Я использовал константу для отладки.


DVM   (2008-08-19 22:59:00) [35]

image_matrix чаво такое?


Anatoly Podgoretsky   (2008-08-19 22:55:00) [36]

> +++vist+++  (19.08.2008 22:46:00)  [0]

А выше?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо