Обсуждение статьи "Изучаем класс CCanvas. Реализация прозрачности графических объектов" - страница 2

 
denkir:

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

"канвас" - создает стандартные  OBJ_BITMAP_LABEL или OBJ_BITMAP. В справке есть функции по их размещению на графике

 //+------------------------------------------------------------------+
//| Перемещает объект "Графическая метка"                            |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long   chart_ID=0,      // ID графика
                     const string name="BmpLabel", // имя метки
                     const int    x=0,             // координата по оси X
                     const int    y=0)             // координата по оси Y
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- переместим объект
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": не удалось переместить X-координату объекта! Код ошибки = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": не удалось переместить Y-координату объекта! Код ошибки = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }

 Не заметил сразу обсуждение выше :) - собственно так же как и ZORDER, только Х и У 

 
MigVRN:

"канвас" - создает стандартные  OBJ_BITMAP_LABEL или OBJ_BITMAP. В справке есть функции по их размещению на графике

 Не заметил сразу обсуждение выше :) - собственно так же как и ZORDER, только Х и У 

Ага, спасибо, сработало... сам пробовал через ObjectMove...

Создаю панель с помощью канваса... нужно её передвинуть по возможности на графике...
 
denkir:

Ага, спасибо, сработало... сам пробовал через ObjectMove...

Создаю панель с помощью канваса... нужно её передвинуть по возможности на графике...
А если панель создавать на базе стандартного диалога? Тогда все элементы созданные в диалоге и добавленные в него, будут перетаскиваться вместе с диалогом.
 
barabashkakvn:
А если панель создавать на базе стандартного диалога? Тогда все элементы созданные в диалоге и добавленные в него, будут перетаскиваться вместе с диалогом.
Да, удобная фича, согласен... до этого момента так и делал... но тут встал вопрос, как добавить пользовательскую графику на панель... вообще по хорошему нужно сделать канвасоподобный control : public CWndObj. Сейчас думаю над этим вопросом...
 
denkir:
Да, удобная фича, согласен... до этого момента так и делал... но тут встал вопрос, как добавить пользовательскую графику на панель... вообще по хорошему нужно сделать канвасоподобный control : public CWndObj. Сейчас думаю над этим вопросом...

Посмотрите видео из поста.

После 15 марта будет в исходниках 

 
denkir:
Да, удобная фича, согласен... до этого момента так и делал... но тут встал вопрос, как добавить пользовательскую графику на панель... вообще по хорошему нужно сделать канвасоподобный control : public CWndObj. Сейчас думаю над этим вопросом...

Что значит "пользовательскую графику":

  • в смысле это то, что Вы нарисуете, как программист?
  • в смысле, берётся картинка от пользователя программы и эта картинка должна отобразиться на канвасе?
 
barabashkakvn:

Что значит "пользовательскую графику":

  • в смысле это то, что Вы нарисуете, как программист?
  • в смысле, берётся картинка от пользователя программы и эта картинка должна отобразиться на канвасе?
Да, выразился неопределённо... Имел в виду возможность создавать динамически различные фигуры средствами методов класса CCanvas...
 

Владимир, хотел вот ещё что спросить.

Есть панель типа CAppDialog. Пусть один из её элементов - это графическая метка типа CBmpButton. Так вот, нельзя ли как-то создать канвас и залинковать его с указанной меткой?  Цель - иметь управляемый элемент панели с возможностями пользовательской графики...

Спасибо.

 
denkir:

Владимир, хотел вот ещё что спросить.

Есть панель типа CAppDialog. Пусть один из её элементов - это графическая метка типа CBmpButton. Так вот, нельзя ли как-то создать канвас и залинковать его с указанной меткой?  Цель - иметь управляемый элемент панели с возможностями пользовательской графики...

Спасибо..

Можно создавать канвасы (то есть несколько канвасов) без привязки к объекту графика через метод Create, а потом эти ресурсы назначаете BmpButton. Можно попробовать даже анимацию делать. Кстати давно хочу про анимацию подумать.
 

Владимир, спасибо за наводку, всё получилось!

Да, канвасы штука очень мощная :-)

Ждём от Вас интересных статей!