| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > C++ Builder

C++ Builder

Ответ
Поиск в этой теме
Непрочитано 24.10.2008, 11:48 #1
C++ Builder
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Решил делать программу можно сказать графическую программу. Но с столкнулся с рядом трудностей. Первая трудность - я не программист Остальные нужно как-то решать.
1. Так как все графические изображения нужно выводить через канву (Canvas) есть небольшие неудобства. В качестве базовой точки используется левый верхний угол. И все построения идут относительно этого угла. Пытаюсь сделать "базовую точку" как в акаде в левом нижнем углу. И самое главное при изменении формы необходимо эту базовую точку "сместить" так чтобы она была равна левому нижнему углу и все последующие координаты отсчитывались от него.
2. Как задать цвет для компонентов. Например у меня на форме нарисована линия:
Canvas->Pen->Color = clRed;
Canvas->LineTo(50,80);
Как мне сделать так чтобы ее цвет можно было бы выбирать с помощью ColorDialog?
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 30.10.2008 в 15:22.
Просмотров: 6820
 
Автор темы   Непрочитано 27.10.2008, 14:07
#2
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Делаю так:
Код:
[Выделить все]
void __fastcall TForm1::FormPaint(TObject *Sender)
{

  Canvas->MoveTo(15,Form1->ClientHeight-15);
  Canvas->LineTo(15,20);
}
получилось
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 29.10.2008 в 10:50. Причина: Решил эту проблему
Shoorup вне форума  
 
Автор темы   Непрочитано 29.10.2008, 10:58
#3
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Я так понял на форуме программистов С++ нету. Очень жаль.
Может кто подскажет или скинет книги по С++. Особенно интересуют вопросы по событиям и по работе с канвой.
Еще вопросик по событию "onPaint" не могу понять как толком оно работает. Я понимаю так:событие происходит при перерисовке окна. Например окно закрыто другим окном, сделал активным окно - перерисовалось. Но есть один недостаток, когда окно взять за шапку и увести за экран (вниз) и вернуть, все что было нарисованно изчезает. Как обойти это?

Offtop: Модераторам:
Если через пару дней никто не ответит, тему можно смело удалять
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 29.10.2008, 11:05
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,829


Зачем удалять?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.10.2008, 20:04
#5
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Я так понял на форуме программистов С++ нету. Очень жаль.
к с++ это имеет слабое отношение, читай книги по билдеру
zamtmn вне форума  
 
Автор темы   Непрочитано 30.10.2008, 10:38
#6
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Offtop: Кулик Алексей aka kpblc, а толку от темы в которой нет ответа. Через пол года мне ответ уже не нужен. А наличие подобных тем только усложняет поиск.
zamtmn, C++ Builder очень похож например на Delphi. А в общем и целом все языки программирования высокого уровня очень похожи. Честно говоря думал на мой вопрос ответят очень быстро. Он очень простой - просто я только учусь и сталкиваюсь с элементарными трудностями. Мне вполне хватилобы кода на Delphi - а перевести его в Builder не сложно.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 30.10.2008, 11:16
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,829


В "чистом" VB тоже есть в формах графическая область (честно скажу, рисованием там не занимался). Насколько мне помнится, там ось х отмеряется вправо (положительные значения), а у - вниз. Соответственно для отрисовки можно тупо брать высоту контрола в пикселах, и из этой высоты отнимать вертикальное смещение рисуемого элемента.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 11:38
#8
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Зря взялся именно за Builder. Это же такой мутант - скрещение компонентов Delphi с синтаксисом C++. Недостаток главный в том, что Builder всегда отставал по возможностям. Да и пасынок какой-то вообще. Нравится C++ как язык - лучше уж в VC работать. Хотя это дело вкуса.

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

Событие OnPaint генерируется, когда надо перерисовать окно. А не при перерисовке окна.

При перемещении окна, изменении размеров и прочих действиях возникают другие события. Часто приходится делать что-то и при них.

Для назначения цвета после диалога ColorDialog надо делать наподобие (пишу на Pascal)
Код:
[Выделить все]
 
if ColorDialog1.Execute then 
  Canvas.Pen.Color:=ColorDialog1.Color; 
 FormPaint(nil);
При этом если диалог закрыт не по Cancel, текущий цвет будет взят из результата выбора.

А вообще-то лучше не использовать "низкоуровневый" Canvas - придется заново велосипед изобретать. Надо найти библиотеку (их много), в которой уже реализован графический редактор, то есть работать на более высоком уровен. Например, TJvDrawImage из огромной библиотеки Jedi - в ней есть почти всё, что в голову может взбрести.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 30.10.2008, 13:08
#9
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Canvas не такой уж и "низкоуровневый". Кажись он вообще к апишным функциям обращается.
Если честно, то хочу написать программу для редактирования файлов форм. Вне акада таких программ не встречал.
Т.к. не программист, то для учебы вполне хорошая задача. Решаю потихоньку.
Дело в том, что для отрисовки думаю использовать Canvas - другого способа рисовать не знаю. По поводу велосипеда, то программа не столько нужна сколько хочу научится программировать.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 30.10.2008, 14:32
#10
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Лучший способ научиться практически - изучать чужой готовый код. Например, подобрать хороший компонент, а лучше библиотеку, взять подходящий пример и начать его перерабатывать под свои условия. Отсекать всё лишнее, добавлять собственный функционал.

В этом случае волей-неволей придется изучить всё достаточно глубоко. Например, будет понятно, почему компонент более высокого уровня, основанный на Canvas, сам умеет перерисовываться при изменении размеров. И массу других полезных сведений. При этом будет и изучение, и готовый полезный результат.

Кстати, используя Builder, все равно придется Delphi изучать. Хотя практически все компоненты имеют пакеты для установки в Builder (bpk) и даже cpp-файлы, но в них-то ссылки на pas. И только очень редкие компоненты написаны наоборот. Могу только 1-2 припомнить приличных.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 30.10.2008, 15:16
#11
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


У меня есть книга по Delphi. Некоторые вопросы решаю через нее.
ShaggyDoc, может подскажете где мне почитать про написание графических приложений? Про TJvDrawImage ничего не нашел. Да и инет у меня не работает нормально (сижу на двг.ру через прокси).
Впринципе понимаю что Canvas это не самое лучшее решение. В MSDN написано немного про функции рисования графики. От туда понимаю, что Canvas использует все тоже самое что описано MSDN. Теже LineTo и MoveTo. При желании можно было бы и на асме написать
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 30.10.2008, 19:13
#12
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Так ведь Canvas - это "холст", на котором вся Windows всё рисует. Поэтому на любом языке будет одинаково. Только когда ставим, например, кнопку, то про Canvas уже не думаем. Оно где-то в предках.

Специальные книги по графическим приложениям найти сложно. Да они и не для таких задач, как shp рисовать. Такая азбука везде описана. Беда в том, что книги хорошие бывают и плохие. Плохих гораздо больше. Фленов штампует, Архангельский. По Builder вообще не встречал, но и не искал специально.

Что касается TJvDrawImage, то это один из компонентов Jedi VCL. Эту библиотеку (в паре с Jedi Code Library) непременно надо иметь. Библиотеки бесплатные, на сегодняшний день надо брать
JVCL334CompleteJCL1102-Build3072.zip отсюда
http://sourceforge.net/project/showf...group_id=45786
ShaggyDoc вне форума  
 
Непрочитано 30.10.2008, 21:10
#13
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Я так понял на форуме программистов С++ нету. Очень жаль. Может кто подскажет или скинет книги по С++. Особенно интересуют вопросы по событиям и по работе с канвой.
Я, к сожалению, не программист C++. Но есть у меня есть один книг в формате PDF (титульный лист во вложении). Правда, весит заархивированный 12 Мб (т.е. непосредственно к сообщению не прицепить. Но если интересует, могу выложить куда-нибудь)

Последний раз редактировалось AlexV, 31.10.2008 в 11:19.
AlexV вне форума  
 
Непрочитано 30.10.2008, 22:43
#14
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Я так понял на форуме программистов С++ нету. Очень жаль.
Есть. Но C++ Builder - это "не мое". Хотя в свое время еще в DOS'е писал на Turbo C (прапрадеде C++ Builder).
Присоединяюсь к мнению ShaggyDoc - если С++ то Visual Studio.
Александр Ривилис вне форума  
 
Непрочитано 30.10.2008, 23:07
#15
metod


 
Регистрация: 09.10.2007
Москва
Сообщений: 451


ну и я на c++ программирую, очень долгое время писал на билдере, но потом плюнул на это чудо, сделал вывод - если программируешь под винду пиши на visual c++
metod вне форума  
 
Непрочитано 30.10.2008, 23:57
#16
asd

всё понемногу
 
Регистрация: 05.03.2008
Украина, Одесса
Сообщений: 215


Мне лично очень помогли книги Галявина и Культина. Небольшие самоучители.

Могу скинуть свою небольшую програмку, но она во-первых не для обучения (не люблю комментировать код), во-вторых тематика графики не очень похожа (предназначалась для ремонта мобильных телефонов).
asd вне форума  
 
Автор темы   Непрочитано 31.10.2008, 09:20
#17
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


AlexV, книгу можно разбить на несколько архивов по 3мб и сменить расширение .rar на .dwg. Выложи плиз в своем предыдущем посте. После того как я скачаю можно удалить. На файлобменник зайти не смогу.

По поводу чем программировать меня если честно не очень интересует. C++ Builder выбрал просто так. Я более менее на нем соображаю просто ну и размер .exe и быстродействие не на последнем месте конечно. Возможно программу буду писать с асемблерскими вставками, а может и нет. Может вообще на асме все напишу. Пока у меня вопрос стал как лучше выводить графику на форму. Как удобней посмотрю. Со многим придется разобраться, есть куча дыр и неясностей в теории.
Нашел замечательную книгу: "Программирование графики для Windows" - Фень Юань. (архив 16 мб - могу если нужно выложить) Книга обо всем и очень подробно -1000 страниц. Скачал с wasmа кучу примеров (пусть даже примитивных) - буду изучать.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 31.10.2008, 11:26
#18
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Shoorup Посмотреть сообщение
AlexV, книгу можно разбить на несколько архивов по 3мб и сменить расширение .rar на .dwg.
Разбитый архив не получается загрузить, ни как .rar, ни как .dwg.
AlexV вне форума  
 
Непрочитано 31.10.2008, 11:41
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,829


А по 2метра rar проходит...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.10.2008, 11:47
#20
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Я выкладывал так справку к 2009му акаду. По 3 метра разбил архив и выложил. Может попробовать чуть меньше сделать архивы.
ShaggyDoc, если архив не большой и не сложно, скинь в эту тему.
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 31.10.2008 в 11:53.
Shoorup вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > C++ Builder

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цвета линий в AutoCAD. Зачем они нужны и как их изменить АнтонЧ AutoCAD 47 09.10.2013 20:34
Выбор расчетной программы Elena cH Расчетные программы 135 25.02.2008 01:56
Добавить свои цвета в цветовую палитру Zlat21 AutoCAD 1 11.12.2007 15:01
2008. Глюк с назначением текущего цвета из Lisp? _Andre_ LISP 5 25.10.2007 13:50
Выбор примитивов в функции (command) mmax Программирование 12 19.05.2006 20:02