Что нового

Удаление конкретного объекта _GDIPlus

mathem

Новичок
Сообщения
39
Репутация
0
Здравствуйте! Вот я в графическом окне создал прямоугольник и эллипс:
Код:
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>

        ; Create GUI
        $hGUI = GUICreate("GDI+", 400, 300)
        GUISetState(@SW_SHOW)

        ; Draw a string
        _GDIPlus_Startup()
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
        $prjamoug = _GDIPlus_GraphicsDrawRect ( $hGraphic, 125, 80, 100, 50)
        $ellips = _GDIPlus_GraphicsDrawEllipse($hGraphic, 130, 100, 140, 70)       
        ; Loop until the user exits.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE

        ; Clean up resources
        _GDIPlus_GraphicsDispose($hGraphic)
        _GDIPlus_Shutdown()

Скажите, пожалуйста, есть ли в Автоит команда, с помощью которой я бы мог удалить, скажем, конкретно прямоугольник, совершенно не трогая эллипс? Поиски в инете почему-то мало что дали.
 

InnI

AutoIT Гуру
Сообщения
4,970
Репутация
1,459
В вашем примере прямоугольник и эллипс - это не объекты. Это команды рисования, которые нельзя "отменить".
Чтобы "удалить" прямоугольник нужно очистить $hGraphic (залить цветом фона) и заново нарисовать только эллипс.
Код:
_GDIPlus_GraphicsClear($hGraphic, 0xFFF0F0F0)
_GDIPlus_GraphicsDrawEllipse($hGraphic, 130, 100, 140, 70)
 

InnI

AutoIT Гуру
Сообщения
4,970
Репутация
1,459
как распознать, объект это или нет?
Если функция создаёт объект, то в её названии обычно присутствует слово "Create" или "Clone". А в справке по функции указано примерно так
Успех:Возвращает дескриптор графического объекта
 
Автор
M

mathem

Новичок
Сообщения
39
Репутация
0
@InnI, ясно. Спасибо большое!
Сообщение автоматически объединено:

А можно еще один вопрос, раз уж речь зашла об объектах. Вот есть функция
_GDIPlus_GraphicsDispose
В ее описании сказано, что
Освободить графический объект
(это - скопированный перевод с английской страницы справки по этой функции). А для чего освобождать графический объект? Вот мы освободили графический объект. И что? Или это только для освобождения оперативки?
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
617
Репутация
80
Вот мы освободили графический объект. И что?
И все ресурсы используемые объектом система может использовать для других целей. Предоставьте что вы запрашиваете память, но не освобождаете ее когда она больше не нужна. Так можно израсходовать всю память и свободной не останется. С графическими объектами также. Если не нужен - освободите, иначе объект и все что с ним связано закреплено за приложением и для других целей использоваться не может.
 
Автор
M

mathem

Новичок
Сообщения
39
Репутация
0
И все ресурсы используемые объектом система может использовать для других целей. Предоставьте что вы запрашиваете память, но не освобождаете ее когда она больше не нужна. Так можно израсходовать всю память и свободной не останется. С графическими объектами также. Если не нужен - освободите, иначе объект и все что с ним связано закреплено за приложением и для других целей использоваться не может.
Ну как я и предполагал:
Или это только для освобождения оперативки?
Ясно, спасибо.
 
Верх