当前位置: 首页 > 知识库问答 >
问题:

在libgdx对话框中绘制形状和图像

杜弘伟
2023-03-14

我目前正在使用libgdx为我的Android游戏开发一个对话框窗口。此对话框窗口包含标签和按钮的集合,但也应该包含图像。该图像表示“剩余健康指示器”,即带有指示玩家健康的符号的空指示器。这个指示器必须用代表剩余健康量的彩色矩形填充(见下面的屏幕截图)。

为了在libgdx的对话框中呈现这一点,我必须绘制一个图像和一个彩色矩形(红色矩形表示剩余健康的实际数量)。我知道对话框支持图像的渲染,但我不知道如何首先绘制矩形。

这是我到目前为止的代码:

public FuelFacilityDialog(GameWorld world, GuiComponent gui) {
    super("Health check", gui.defaultSkin);

    this.world = world;
    this.gui = gui;

    setModal(true);
    setMovable(false);
    setResizable(false);

    Image healthIndicator = new Image();
    Button button1   = new TextButton("heal", gui.defaultSkin);
    Button button4   = new TextButton("Exit", gui.defaultSkin);

    healthIndicator.setDrawable(new TextureRegionDrawable(AssetLoader.healthIndicatorV));
    healthIndicator.setScaling(Scaling.fit);
    setObject(button1, true);
    setObject(button4, false);

    Table imageTable = new Table();
    Table buttonTable = new Table();

    imageTable.add(healthIndicator).width(100).height(200);
    buttonTable.add(button1).width(100).height(50).expandY();

    this.getContentTable().padTop(20);
    this.getContentTable().padBottom(20);
    this.getContentTable().add(imageTable);
    this.getContentTable().add(buttonTable).height(200);
    getButtonTable().add(button2);
}

共有1个答案

高明辉
2023-03-14

我已经找到了我的问题的答案。为了绘制图像和形状,可以使用像素图。可以首先创建在其上绘制矩形的像素图。然后,创建另一个在其上绘制图像的pixmap。然后可以通过将一个像素图绘制到另一个像素图来组合这两个像素图。

这是我用来构建一个包含矩形的图像的代码,该矩形指示实际的健康水平,并在其上绘制指示器图像。

private Image getHealthIndicatorImage() {
        Image indicatorImage = new Image();
        Pixmap healthIndicator = new Pixmap(AssetLoader.healthIndicatorV);
        Pixmap healthLevel = new Pixmap(healthIndicator.getWidth(), healthIndicator.getHeight(), Format.RGBA8888);

        healthLevel.setColor(Config.InstrumentPanel.healthInstrumentColor1);
        healthLevel.fillRectangle(0, 0, 50, 50);
        healthLevel.drawPixmap(healthIndicator, 0, 0);

        indicatorImage.setDrawable(new TextureRegionDrawable(new TextureRegion(new Texture(healthLevel))));
        indicatorImage.setScaling(Scaling.fit);

        return indicatorImage;
    }
 类似资料:
  • 通过 Entity 添加形状 先来看一个添加立方体的例子 var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = viewer.entities.add({ name : 'Red box with black outline', position: Cesium.Cartesian3.fromDegrees(-107

  • 注意:使用形状工具,可以轻松地创建按钮、导航栏以及其他在网页上使用的项目。有关 Photoshop 中所有绘图功能的概述,请参阅关于绘图。 在形状图层上创建形状 选择一个形状工具或钢笔工具。确保从选项栏的菜单中选择“形状”。 若要选取形状的颜色,请在选项栏中单击色板,然后从拾色器中选取一种颜色。 (可选)在选项栏中设置工具选项。单击形状按钮旁边的反向箭头以查看每个工具的其他选项。(请参阅形状工具选

  • 注意:使用形状工具,可以轻松地创建按钮、导航栏以及其他在网页上使用的项目。有关 Photoshop 中所有绘图功能的概述,请参阅关于绘图。 在形状图层上创建形状 选择一个形状工具或钢笔工具。确保从选项栏的菜单中选择“形状”。 若要选取形状的颜色,请在选项栏中单击色板,然后从拾色器中选取一种颜色。 (可选)在选项栏中设置工具选项。单击形状按钮旁边的反向箭头以查看每个工具的其他选项。(请参阅形状工具选

  • 我的迭代器 我的绘图方法

  • 我试图用shap和我的数据作图,但弄错了,我真的不明白为什么。我还没发现这方面的任何东西。请解释如何避免此错误?

  • 问题内容: 我创建了此代码,当我 在JForm上选择单选按钮时,该代码应该绘制某些内容,我已经使用NetBeans创建了GUI。 当我选择单选按钮时,没有任何反应。 一段时间以来,我一直在试图找出问题所在,但仍然找不到解决方案,这就是我来 这里的原因。如果有人发现错误,我将不胜感激。 问题答案: 我在您的代码中看到了一些问题: 您正在扩展JFrame,您不应该这样做,因为可以将其读DrawShap