Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 29.02.2012
Сообщений: 27

Система координат и масштаб в TImage, TPictureBox.

29.02.2012, 15:39. Показов 2568. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заранее извиняюсь, если этот вопрос уже поднимался... Просто я весь инет обрыл, но нигде ничего путного не нашел.
Как известно, система координат во всех (ну или в большинстве) средах начинается в верхнем левом углу какого-либо объекта, и, к тому же, ось У отсчитывается сверху-вниз (в т.ч. и в билдере). Конечно, преобразование привычной нам СК к такой - дело бесхитростное и быстрое. Но все же, когда в ходе написания программы часто приходится обращаться к рисованию, это постоянное вынужденное преобразование быстро надоедает.
Помнится, в Visual Basic'е была очень удобная функция, с помощью которого для какого-либо объекта (формы или picture) можно было задать собственную с.к. -
PureBasic
1
2
3
object.Scale (x1, y1)-(x2, y2)
(где х1,у1 и у2,у2 - координаты верхнего левого и нижнего правого углов соответственно, 
ограничивающих заданную нами систему координат.
и после этого можно оперировать с этим объектом, абсолютно не заморачиваясь о всяких там преобразованиях. Насколько я понял в C++ Builder так напрямую сделать нельзя. Но все же, подобная возможность очень облегчила бы мне работу). Пока все на что я уподобился это на написание функции, выводящей нужные для рисования координаты при вводе реальных, но и она требует постоянного обращения. Возможно ли написание какого-нибудь например класса, который преобразует СК объекта раз и навсегда (в пределах текущей программы конечно)? Или может есть еще какие-нибудь средства упрощающие данную проблему. В общем, буду признателен любому адекватному совету .
P.S. Я только начинаю осваивать C/C++, после таких языков как Basic и Pascal сложновато. Так что извините, если вопрос глупый (например, концепция классов пока мне мало ведома ).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.02.2012, 15:39
Ответы с готовыми решениями:

Canvas - оси координат, масштаб
Здравствуйте, пожалуйста, помогите дописать программу! Нужно сделать оси координат и масштаб. Программа строит график, я задал функцию,...

Определение локальных координат указателя мыши на изображении компонента TImage
Подскажите пожалуйста, как можно определить координаты (не экранные) указателя мыши при перемещении его по компоненту TImage? Мне это нужно...

Система координат
Надо сделать систему координат xyz

2
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.03.2012, 01:03
Лучший ответ Сообщение было отмечено Serhantes как решение

Решение

Да запросто Надо всего лишь создать класс, унаследовав от класса объекта, который вы используете для рисования, и, к примеру, добавить методы с преобразованием координат(или перегрузить имеющиеся).
Как-нибудь так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class t_cartesian_bitmap
               : public Graphics::TBitmap
{
private:
 
protected:
 
public:
    void __fastcall canvas_draw( int x, int y, Graphics::TGraphic *src ) {
        y = Height - y;
        Canvas->Draw( x, y, src );
    };
__published:
 
};
 
//...
t_cartesian_bitmap *bmp = new t_cartesian_bitmap();
bmp->canvas_draw( 10, 15, src_bmp );
Добавлено через 7 минут
Или еще проще - использовать API функцию
C++
1
2
3
4
BOOL SetWorldTransform(
  HDC hdc,               // handle to device context
  CONST XFORM *lpXform   // transformation data
);
Но работать она будет только на win NT.
1
2 / 2 / 1
Регистрация: 29.02.2012
Сообщений: 27
01.03.2012, 01:29  [ТС]
BRcr, огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2012, 01:29
Помогаю со студенческими работами здесь

[Cocos2d-x] Система координат
Во-первых скажу, что это моя первая игра и вообще первый опыт работы с графикой и движком вообще. Столкнулся с такой проблемой - написал...

3D система координат
такой вопрос - как реализовать перемещение точки в трехмерной ортогональной системе координат? например, изначально обьект в точке...

Система координат
Задачка во вложениях. Допустим, текущая скорость берётся из вара SKOROST. Есть известные координаты: начало пути и конец пути (fromX,...

Система координат
Заданы декартовы координаты точки на плоскости. Перевести в полярные координаты с учётом номера квадранта. Угол перевести в градусную меру...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru