Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2011, 19:27   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Изменение двумерного массива с сохранением всех данных.

Хочу спросить совета профессионалов.
Есть у меня TImage с картинкой из черных точек, линий, и есть двумерный массив, с числом ячеек, соответствующим числу пикселей TImage. В ячейках массива так: если пиксель (1,1) картинки - черный, то в ячейку массива пишется 1, если белый то 0. И т.д.
Как сделать, чтобы при масштабировании TImage изменялся и массив (масштабировался)? Но с сохранением всех данных.

Масштабирую изображение изменением размеров TImage со Strech:= True;

P.S. Извиняюсь за подобное изложение своей идеи.
даешь высокое напряжение

Последний раз редактировалось Vova777; 02.09.2011 в 19:32.
Vova777 вне форума Ответить с цитированием
Старый 03.09.2011, 03:34   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> с сохранением всех данных.

Это как? Был массив 1000х1000, сжали его до 1х1, и что дальше?

Или смысл в том, что при изменении размера картинки, 1 и 0 в массиве правильно пересчитывались? Имхо, проще заново будет их из картинки вытащить.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.09.2011, 03:42   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Vova777,
А вы маштабируйте картинку,в началеочистите массив и сократите его до 1x1, по окончанию маштабирования перезаполняйте массив заного.
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2011, 12:30   #4
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Vova777,
А вы маштабируйте картинку,в началеочистите массив и сократите его до 1x1, по окончанию маштабирования перезаполняйте массив заного.
код подскажите для попиксельной записи в массив?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 03.09.2011, 12:33   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
В ячейках массива так: если пиксель (1,1) картинки - черный, то в ячейку массива пишется 1, если белый то 0. И т.д.
Предпологалось что это у вас уже реализованно как код
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2011, 12:49   #6
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Предпологалось что это у вас уже реализованно как код
так и есть, но хотел бы увидеть как правильно

Не надо код, я сам так сделал:

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  disk: array[1..10, 1..10] of integer;
  x, y: integer;
begin
  for y:= 0 to 10 do
  begin
    for x:= 0 to 10 do
    begin
      if Image1.Canvas.Pixels[x,y] = clBlack then
      StringGrid1.Cells[x,y]:= '1';
    end;
  end;
end;
Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Vova777,
А вы маштабируйте картинку,в началеочистите массив и сократите его до 1x1, по окончанию маштабирования перезаполняйте массив заного.
Дело в том что я так не могу, мне нужно менять переменную по ходу заполнения изображения (в цикле ставятся точки или линии). Я тогда не смогу определить где просто точка а где точка - часть линии.

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

Последний раз редактировалось Stilet; 03.09.2011 в 15:00.
Vova777 вне форума Ответить с цитированием
Старый 03.09.2011, 13:00   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

При изменении пропорций или размеров Image срабатывает некий алгоритм, который сжимает или растягивает изображение. Если вы знаете этот алгоритм и сможете его реализовать в массиве-тени, то все карты вам в руки. Если нет - то выше вам предложили как поступить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.09.2011, 13:02   #8
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
При изменении пропорций или размеров Image срабатывает некий алгоритм, который сжимает или растягивает изображение. Если вы знаете этот алгоритм и сможете его реализовать в массиве-тени, то все карты вам в руки. Если нет - то выше вам предложили как поступить
Неужели ничего нельзя сделать?

Так как предложили выше, я только определю где черные пиксели, но ведь они могут являться частью линии, прямоугольника - мне важно определить именно это, а не просто его позицию.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 03.09.2011, 19:14   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Досканально изучите как работает Timage и все его предки. Поищите комоненты аналоги Tmage с расширеными событиями.. вариантов массы.
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2011, 20:36   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По хорошему это делается не так. Для каждого элемента изображения (линия, прямоугольник и т.п.) создается объект, который и отображает себя на канве. Программно нужно дать возможность выделения этого объекта и изменение его состояния запоминается в нем и отображается на канве. Визуальный пример такого подхода в Word-е можно посмотреть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт данных из интернета с сохранением результата ipigarev Microsoft Office Excel 6 26.01.2011 13:31
Проблема с сохранением данных. Simmularious Microsoft Office Excel 6 09.12.2010 09:28
Сортировка двумерного массива в С(Си) savra Помощь студентам 5 26.11.2009 10:47
Проблема с сохранением данных KLOP Общие вопросы Delphi 10 09.04.2009 11:17
Проблема с сохранением данных в другую таблицу HAMMAN Помощь студентам 1 26.05.2008 08:30