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 [ 105.28 КБ | Просмотров: 7326 ] Вложение: 2) Код: nv := Views.OldView(loc, name); По поиску см. Overview by Example: ObxContIter
get first element; WHILE (element # NIL) & ~(element is the right one) DO get next element END; m.ReplaceView(v,nv) |
Автор: | 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/ |