OberonCore
https://forum.oberoncore.ru/

Нужен простой пример отрисовки BMP на форме.
https://forum.oberoncore.ru/viewtopic.php?f=24&t=4065
Страница 1 из 1

Автор:  Kubanych [ Суббота, 01 Сентябрь, 2012 13:49 ]
Заголовок сообщения:  Нужен простой пример отрисовки BMP на форме.

Уважаемые коллеги.
Есть у кого простой пример отрисовки BMP на форме?
Чтобы в ходе работы программы можно было менять папку и путь к BMP файлу
и обновлять изображение на форме.

Автор:  Евгений Темиргалеев [ Суббота, 01 Сентябрь, 2012 17:56 ]
Заголовок сообщения:  Re: Нужен простой пример отрисовки BMP на форме.

Для bmp-картинок есть стандартная вьюшка; конвертер для неё регистрируется.
Код:
   PROCEDURE Config.Setup*;
      VAR res: INTEGER;
   BEGIN
      ...
      Converters.Register("HostBitmaps.ImportBitmap", "HostBitmaps.ExportBitmap", "HostBitmaps.StdView", "bmp", {});
      ...
   END Setup;


Навскидку:
1) Открыть bmp-картинку, вставить её на форму руками, куда надо.

2) Программная замена: открыть новую картинку и заменить старую на форме.
- открытие стандартно: new := Views.Old(loc, name) --- если имя xxx.bmp, то используется соотв. конвертер и Вы получаете bmp-вьюшку
- замена:
-- найти на форме старую bmp-вьюшку (по типу, по положению --- придумайте что-нибудь) линейным поиском --- см. FormModels.Reader
-- заменить её стандартным образом, см. Containers.Model.ReplaceView

Автор:  Kubanych [ Вторник, 04 Сентябрь, 2012 14:40 ]
Заголовок сообщения:  Re: Нужен простой пример отрисовки BMP на форме.

примерно так?
Код:
MODULE testbmp;
   IMPORT  Log := StdLog,  Views, Files,StdCmds,Containers, Controls;
   
VAR  v,nv:Views.View;
      loc:Files.Locator;
      m:Containers.Model;
         
PROCEDURE Do* ();
VAR
         name:Files.Name;
         p:Controls.Prop;
BEGIN
   StdCmds.New;
   loc:=Files.dir.This('E:\');
   name:='2.bmp';
   v := Views.OldView(loc, name);
   Views.Deposit(v);
   StdCmds.PasteView;

   NEW(p);
   p.link := "testbmp.R"; p.label := "обновить"; p.guard := ""; p.notifier := "";
   p.level := 0;
   p.opt[0] := FALSE; p.opt[1] := FALSE;
   p.opt[2] := FALSE; p.opt[3] := FALSE;
   p.opt[4] := FALSE;
   Views.Deposit(Controls.dir.NewPushButton(p));   
   StdCmds.PasteView;
   
   
   m:=Containers.Focus().ThisView().ThisModel();
   StdCmds.SetMaskMode;
   
END Do;   
   
PROCEDURE R* ();
VAR   name:Files.Name;
BEGIN
   name:='3.bmp';
   nv := Views.OldView(loc, name);
   m.ReplaceView(v,nv)
END R;   
   
END testbmp.

Автор:  Евгений Темиргалеев [ Вторник, 04 Сентябрь, 2012 21:23 ]
Заголовок сообщения:  Re: Нужен простой пример отрисовки BMP на форме.

Имел ввиду несколько другое...
1)
Вложение:
1.png
1.png [ 105.28 КБ | Просмотров: 3937 ]
Вложение:
2.png
2.png [ 33.9 КБ | Просмотров: 3937 ]

2)
Код:
nv := Views.OldView(loc, name);
get first element;
WHILE (element # NIL) & ~(element is the right one) DO
      get next element
END;
 m.ReplaceView(v,nv)
По поиску см. Overview by Example: ObxContIter

Автор:  Kubanych [ Среда, 05 Сентябрь, 2012 06:07 ]
Заголовок сообщения:  Re: Нужен простой пример отрисовки BMP на форме.

Евгений Темиргалеев писал(а):
Имел ввиду несколько другое...

так ? (в простейшем случае вьюшку с рисунком вставляем на форму первой)
Код:
MODULE testbmp2;
   IMPORT   Views, Files,Containers;
   
VAR 
      was:BOOLEAN;
PROCEDURE Do2*;
(** focus the first control whose label is "magic name" **)
VAR c: Containers.Controller;
      name:Files.Name;
      v,nv:Views.View;
      loc:Files.Locator;
      m:Containers.Model;
BEGIN
   c := Containers.Focus();
   IF c # NIL THEN
      c.GetFirstView(Containers.any, v);

      IF v # NIL THEN
         c.SetFocus(v);
         m:=c.ThisView().ThisModel();
         IF  was  THEN
            name:='2.bmp'
         ELSE
            name:='3.bmp'
         END;
         was:=~was;
         
         loc:=Files.dir.This('E:\');         
         nv := Views.OldView(loc, name);
         m.ReplaceView(v,nv)
      END
   END
END Do2;

BEGIN
   was:=FALSE;   
END testbmp2.

Автор:  Евгений Темиргалеев [ Среда, 05 Сентябрь, 2012 17:36 ]
Заголовок сообщения:  Re: Нужен простой пример отрисовки BMP на форме.

Kubanych писал(а):
Евгений Темиргалеев писал(а):
Имел ввиду несколько другое...
так ? (в простейшем случае вьюшку с рисунком вставляем на форму первой)
Да, вроде этого.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/