Как следует развернуть кнопки скошенной графики c в GMS3? - PullRequest
1 голос
/ 05 апреля 2020

Это может в конечном итоге стать отчетом об ошибке, но так как я нашел обходной путь для аналогичной проблемы с диалоговой графикой в ​​GMS3, я надеюсь, что может быть способ заставить кнопки скоса отображаться правильно. В следующем примере сценария демонстрируется проблема:

    class ModelessDialogWithBevelButton : UIFrame
    {
        Object Init(Object self)
        {
            TagGroup dialogSpec = DLGCreateDialog("");
            TagGroup dialogItems = dialogSpec.DLGGetItems();

            Number size = 100;
            Number factor = 4 * Pi() / size;
            Image graphicImage := RGBImage("Graphic", 4, size, size);
            graphicImage = RGB(255 * Sin(factor * iradius) ** 2, 255 * Cos(factor * iradius) ** 2, 0);

            // Add labeled box with graphic
            Number scaler = 1;
            TagGroup graphicBoxSpec = DLGCreateBox("Graphic");
            TagGroup graphicBoxItems = graphicBoxSpec.DLGGetItems();
            TagGroup graphicSpec = DLGCreateGraphic(scaler * size, scaler * size);
            graphicSpec.DLGAddBitMap(graphicImage);
            graphicBoxItems.DLGAddElement(graphicSpec);
            dialogItems.DLGAddElement(graphicBoxSpec, "Left", "West");

            // Add labeled box with bevel button
            TagGroup buttonBoxSpec = DLGCreateBox("Bevel Button");
            TagGroup buttonBoxItems = buttonBoxSpec.DLGGetItems();
            TagGroup buttonSpec = DLGCreateBevelButton(graphicImage, graphicImage, "DoButton");
            buttonBoxItems.DLGAddElement(buttonSpec);
            dialogItems.DLGAddElement(buttonBoxSpec, "Left", "West");

            return self.super.Init(dialogSpec);
        }

        void DoButton(Object self)
        {
            OKDialog("Button clicked");
        }
    }

    void main()
    {
        Object dialog = Alloc(ModelessDialogWithBevelButton).Init();
        dialog.Display("Bevel Button Test");
    }

    main();

В то время как растровое изображение элемента graphi c заполняет только верхнюю левую четверть указанной области graphi c, растровое изображение кнопки скоса заканчивается заполнением только центральная четверть области скоса. В случае графиков c мы можем обойти это несоответствие, установив для переменной масштабирования значение 0,5 (по крайней мере, в GMS 3.4, работающей под последней версией Win10). Однако я не нашел способа уменьшить область графика c кнопки скоса, чтобы она соответствовала растровому изображению. Кто-нибудь еще сталкивался с этим и нашел решение?

1 Ответ

1 голос
/ 06 апреля 2020

Это действительно другое проявление той же проблемы, что и

Изменилось ли развертывание графики диалогов в GMS3?

Однако, как Что касается исправления, вы можете использовать команду DLGExternalPadding с отрицательными значениями, чтобы «сжать» кнопку скоса. Это решение, однако, является нестабильным в отношении настроек dpi Windows10, как и другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...