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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 11:18   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Построение картинки наиболее оптимально

Это опять я.
Бьюсь над проблемой со вчерашнего вечера. Никак не могу понять, как построить картинку не прибегая к отрисовыванию отдельных точек.
Картинка может быть любого размера, тогда координаты будут относительными (Width - 2). В общем задача в втом, чтобы за минимальное количество кода нарисовать картинку. В голову, кроме цикла с точками, ничего не приходит.

Инструменты:
Точка, Линия, Прмяугольник, Залить_Все, Горизонтальные_Линии*, Вертикальные_Линии*.

*Работает так - указывается увет и частота (например 2 - тогда каждая вторая строка на картинке будет залита таким цветом).

P.S. Изображение на форуме увеличено в 4 раза.
P.P.S.
Изображения:
Первое - Ширина нечетна, Высота нечетна,
Второе - Четная ширина, нечетная высота
Третье - Нечетная ширина, четная высота
Четвертое - Четная ширина, четная высота
Изображения
Тип файла: png sel.PNG (1.0 Кб, 131 просмотров)
Тип файла: png sel2.PNG (1.0 Кб, 130 просмотров)
Тип файла: png 3.PNG (1.1 Кб, 137 просмотров)
Тип файла: png 4.PNG (1.1 Кб, 137 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 26.12.2010 в 11:27.
Alex Cones вне форума Ответить с цитированием
Старый 26.12.2010, 12:20   #2
Vikenty
Заслуженный флудер
Участник клуба
 
Аватар для Vikenty
 
Регистрация: 31.03.2010
Сообщений: 1,473
По умолчанию

Код:
Canvas.Rectangle(20,20,120,80);
Canvas.Pixels[119,79]:=Form1.Color;
Canvas.Pixels[119,20]:=Form1.Color;
Canvas.Pixels[20,20]:=Form1.Color;
Canvas.Pixels[20,79]:=Form1.Color;

Последний раз редактировалось Vikenty; 26.12.2010 в 12:33.
Vikenty вне форума Ответить с цитированием
Старый 26.12.2010, 13:02   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Размер заранее неизвестен. В принципе можно через цикл, но там неувязка с четность\нечетность, когда две точки сливаются в одну в углу.

UPD-------------------------

Вот, сделал так, но мне это кажется извратом:
Код:
DrawRectangle(TexInd, '', FALSE, 0, 0, Warehouse.Button[BNum].Width - 1, Warehouse.Button[BNum].Height - 1, $000000);
DrawRectangle(TexInd, '', FALSE, 1, 1, Warehouse.Button[BNum].Width - 2, Warehouse.Button[BNum].Height - 2, COLOR_TRANS);

For X := 4 To Warehouse.Button[BNum].Width - 5 Do
 If Odd(X) Then DrawPoint(TexInd, '', FALSE, X, 4, $000000);

For X := 4 To Warehouse.Button[BNum].Width - 5 Do
 If Odd(Warehouse.Button[BNum].Width) Then
  Begin
   If Odd(X) Then DrawPoint(TexInd, '', FALSE, X, Warehouse.Button[BNum].Height - 5, $000000);
  End
 Else
  If Not(Odd(X)) Then DrawPoint(TexInd, '', FALSE, X, Warehouse.Button[BNum].Height - 5, $000000);

For Y := 4 To Warehouse.Button[BNum].Height - 5 Do
 If Odd(Y) Then DrawPoint(TexInd, '', FALSE, 4, Y, $000000);

For Y := 4 To Warehouse.Button[BNum].Height - 5 Do
 If Odd(Warehouse.Button[BNum].Height) Then
  Begin
   If Odd(Y) Then DrawPoint(TexInd, '', FALSE, Warehouse.Button[BNum].Width - 5, Y, $000000);
  End
 Else
  If Not(Odd(Y)) Then DrawPoint(TexInd, '', FALSE, Warehouse.Button[BNum].Width - 5, Y, $000000);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 26.12.2010 в 13:39.
Alex Cones вне форума Ответить с цитированием
Старый 29.12.2010, 01:40   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

А почему раздел свободного общения?
Arigato вне форума Ответить с цитированием
Старый 29.12.2010, 09:07   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Не, ну а какой? У нас есть раздел "Дизайн" или "алгоритмы"?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.12.2010, 09:47   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

размышления на основе рисунков пост 1.
Ш В | ВЛ ВП НЛ НП(заполнение углов)
Ч Ч | - - - -
Ч Н | - + - +
Н Ч | - - + +
Н Н | - + + -
формула заполнения углов (Ч=(-)0 Н=(+)1) 0 В Ш (Ш xor В)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.12.2010, 11:35   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Перенес в Мультимедиа в Delphi, т.к. речь все же о мультимедиа, а программа нужна в Delphi.
Arigato вне форума Ответить с цитированием
Старый 29.12.2010, 12:33   #8
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Честно говоря я тоже не понял почему перенесли тему, ибо тут идет обсуждение по большей части алгоритма нежели конкретной реализации на делфи.
Levsha100 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение картинки на кнопке WPF. Загрузка картинки из ресурсов. Проблема с Uri. Casper-SC Общие вопросы .NET 0 27.06.2010 23:11
Как определить, что игроки играют оптимально? k1r1ch Помощь студентам 4 23.11.2009 22:31
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54
Какой из языков программирования наиболее гибкий? LAN Свободное общение 15 07.11.2007 14:35
Какой из языков программирования наиболее жёсткий? JTG Свободное общение 10 07.11.2007 14:30