Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Вопрос об Application.ActiveProjectView.MakeImageFile

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
IvanIvan



Зарегистрирован: 14.07.2017
Сообщения: 4

СообщениеДобавлено: Ср 19 Июл 2017 12:28    Заголовок сообщения: Вопрос об Application.ActiveProjectView.MakeImageFile Ответить с цитатой

Здравствуйте!
Вопрос в следующем.
Я в модуле программно рисую в окне ИнГЕО с помощью метода PaintContour какого-либо метода отображения. После отрисовки я вызываю Application.ActiveProjectView.MakeImageFile().
Однако в полученном файле нарисованное мною отсутствует (то есть присутствуют все объекты, кроме нарисованных мной), хотя в главном окне ИнГЕО все еще присутствует.
Подскажите, как решить эту проблему?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Чт 20 Июл 2017 02:53    Заголовок сообщения: Ответить с цитатой

если вы рисуете по какому то событию "рисования БД", то MakeImageFile это покажет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IvanIvan



Зарегистрирован: 14.07.2017
Сообщения: 4

СообщениеДобавлено: Чт 20 Июл 2017 10:23    Заголовок сообщения: Ответить с цитатой

Рисование происходит по нажатию кнопки меню. В DbPaint_PaintComplete я продублировал вызов моей функции рисования, но MakeImageFile так и не сохраняет мои рисованияSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Вс 23 Июл 2017 00:57    Заголовок сообщения: Ответить с цитатой

IvanIvan писал(а):
Рисование происходит по нажатию кнопки меню. В DbPaint_PaintComplete я продублировал вызов моей функции рисования, но MakeImageFile так и не сохраняет мои рисованияSmile

В DbPaint_PaintComplete рисуете через surface переданный в DbPaint_PaintComplete? или взятый из MapWindow?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IvanIvan



Зарегистрирован: 14.07.2017
Сообщения: 4

СообщениеДобавлено: Пн 24 Июл 2017 15:56    Заголовок сообщения: Ответить с цитатой

Пробовал и на том, и на другом.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Вт 25 Июл 2017 09:58    Заголовок сообщения: Ответить с цитатой

IvanIvan писал(а):
Пробовал и на том, и на другом.

работающий код
фрагмент c# обрабатывающий события из ингео

Код:

    public class MainClass
    {
        Ingeo.IIngeoApplication app;
        DrawSystem drs;
        int lastx, lasty, mx,my;
        long lastclick;
        public void Init(Ingeo.IIngeoApplication app)
        {
            this.app = app;
            drs = new DrawSystem(app);
           
        }
        public void ShowPanel()
        {
            drs.ShowPanel();
        }
        public void Stop()
        {
            drs.Stop();
        }
        public void BaseOpened()
        {
            drs.BaseOpened();
        }
        public void BaseClosing()
        {
            drs.BaseClosed();
        }
        public void BaseDrawed(object surface)
        {
            drs.Draw(surface as Ingeo.IIngeoPaintSurface);
        }
....

код скрипта передающий событие
Код:

option explicit
dim drobj
....
' Вызывается после рисования содержимого базы данных
sub DbPaint_PaintComplete(aSurface)
  drobj.BaseDrawed( aSurface)
end sub
....


фрагмент кода непосредственно начинающий рисование

Код:

....
        internal void StartDraw(Ingeo.IIngeoPaintSurface surf)
        {
            currentsurface = surf;
            currentgr = Graphics.FromHdc( (IntPtr)currentsurface.DC);
....
           

        }
....

далее рисуем в этом graphics все что хотим, с учетом что рисуем мы
в системе координат окна
хотя местами рисуем и через ингео
Код:

....
        internal void DrawPolyLine(List<PointFD> points)
        {
            Ingeo.IIngeoContour cntr = app.CreateObject(Ingeo.TIngeoObjectClass.inocContour, 0) as Ingeo.IIngeoContour;
            Ingeo.IIngeoContourPart cntp = cntr.Insert(-1);
            currentsurface.Pen.Style = InScripting.TInPenStyle.inpsSolid;
            currentsurface.Pen.WidthInMM = 0;
            currentsurface.Pen.ForZoomScale = 0;
            currentsurface.Pen.Mode = InScripting.TInPenMode.inpmCopy;
            currentsurface.Pen.Color = 0xFF0000;
            foreach (PointFD p in points)
            {
                double c = 0;
                if (p is PointFDC)
                {
                    c = (p as PointFDC).c;
                }
                cntp.InsertVertex(-1, p.X, p.Y, c);
            }
            currentsurface.PaintContour(cntr, true); ;
        }
....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Вт 25 Июл 2017 10:24    Заголовок сообщения: Ответить с цитатой

если надо есть и Delphi пример
сгенерированный код activex

Код:

...
type
  TINReliefObject = class(TAutoObject, IINReliefObject)
  protected
    procedure FastWork; safecall;
    procedure MouseDown(button, shift: LongWord; aX, aY: Integer); safecall;

    procedure Done; safecall;
    procedure Draw(const asurf: IUnknown); safecall;
    procedure Init(const app: IUnknown); safecall;
    procedure ShowSetup; safecall;



  end;

...


реализация
Код:

...
procedure TINReliefObject.Draw(const asurf: IUnknown);
begin
  nrprojectlist.DrawAll(asurf as IIngeoPaintSurface);
end;

...


непосредственно рисующий фрагмент
Код:

....
procedure TNRProject.DrawPoints(surf: IIngeoPaintSurface);
var cntr:IIngeoContour;
    stl:IIngeoStyle;
    pntr,tpntr,upnt:IIngeoPainter;
    pntr2,pntr2a:IIngeoStdPainter;
    cntp:IIngeoContourPart;
    i:integer;
    pp:TNRPoint;
begin

    if not pshow then
      exit;
    pntr2:=globalapp.CreateObject(inocPainter,inptStd) as IIngeoStdPainter;
    pntr2.Pen.Style:=inpsSolid;
    pntr2.Pen.Color:=clRed;
    pntr2.Pen.WidthInMM:=0.1;
    pntr2.Pen.ForZoomScale:=1/500;
    pntr2.Brush.Style:=inbsClear;
    pntr2a:=globalapp.CreateObject(inocPainter,inptStd) as IIngeoStdPainter;
    pntr2a.Pen.Style:=inpsSolid;
    pntr2a.Pen.Color:=clYellow;
    pntr2a.Pen.WidthInMM:=0.1;
    pntr2a.Pen.ForZoomScale:=1/500;
    pntr2a.Brush.Style:=inbsClear;
  for i:=0 to pnts.Count-1 do
  begin
    pp:=pnts.GetPoint(i);
    if incntrs.IsPointIn(pp.x,pp.y) then
      pntr:=pntr2 else pntr:=pntr2a;
    cntr:=globalapp.CreateObject(inocContour,0) as  IIngeoContour;
    cntp:=cntr.Insert(-1);
    cntp.InsertVertex(-1,pp.x-1,pp.y-1,0);
    cntp.InsertVertex(-1,pp.x+1,pp.y-1,0);
    cntp.InsertVertex(-1,pp.x+1,pp.y+1,0);
    cntp.InsertVertex(-1,pp.x-1,pp.y+1,0);
    cntp.Closed:=True;
      pntr.PaintContour(surf,cntr,'');
  end;
end;
...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IvanIvan



Зарегистрирован: 14.07.2017
Сообщения: 4

СообщениеДобавлено: Ср 26 Июл 2017 15:42    Заголовок сообщения: Ответить с цитатой

Большое спасибо за такой развернутый ответ!
Позже проверю его на себе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB