1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Горизонтальный градиент в клиенте

Тема в разделе "Оффтопик", создана пользователем Dereku, 18 фев 2014.

  1. Автор темы
    Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Сабж. Дрочу гугл по этому поводу уже второй день. Суть:
    В Gui.java есть метод drawGradientRect
    Код:
    protected void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6) {
            float f = (float) (par5 >> 24 & 0xff) / 255F;
            float f1 = (float) (par5 >> 16 & 0xff) / 255F;
            float f2 = (float) (par5 >> 8 & 0xff) / 255F;
            float f3 = (float) (par5 & 0xff) / 255F;
            float f4 = (float) (par6 >> 24 & 0xff) / 255F;
            float f5 = (float) (par6 >> 16 & 0xff) / 255F;
            float f6 = (float) (par6 >> 8 & 0xff) / 255F;
            float f7 = (float) (par6 & 0xff) / 255F;
            GL11.glDisable(GL11.GL_TEXTURE_2D);
            GL11.glEnable(GL11.GL_BLEND);
            GL11.glDisable(GL11.GL_ALPHA_TEST);
            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            GL11.glShadeModel(GL11.GL_SMOOTH);
            Tessellator tessellator = Tessellator.instance;
            tessellator.startDrawingQuads();
            tessellator.setColorRGBA_F(f1, f2, f3, f);
            tessellator.addVertex(par3, par2, zLevel);
            tessellator.addVertex(par1, par2, zLevel);
            tessellator.setColorRGBA_F(f5, f6, f7, f4);
            tessellator.addVertex(par1, par4, zLevel);
            tessellator.addVertex(par3, par4, zLevel);
            tessellator.draw();
            GL11.glShadeModel(GL11.GL_FLAT);
            GL11.glDisable(GL11.GL_BLEND);
            GL11.glEnable(GL11.GL_ALPHA_TEST);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
        }
    Вся кака в том, что он рендрит вертикальный градиент, когда мне нужно то же самое, но по горизонтали.
    У кого есть код/кусок кода/название мода, в котором есть нужный мне метод/ссылки на гитхаб, где оно реализовано, просьба скинуть в тему.

    UPD: оказывается, модераторы не самые хорошие люди, ибо тема создана в разделе "Помощь". Что ж, спасибо что хоть не удалили тему.
     
    Последнее редактирование: 18 фев 2014
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Dereku, Напиши в еклипсе tessellator. и посмотри какие варианты предложит.
     
  3. Автор темы
    Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Там всё очень грустно - уже смотрел. Надеюсь, все 564 строки скидывать не нужно?)
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тогда иди читать документацию по lwjgl.
     
  5. Автор темы
    Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Да вот тоже хочется, но взглянув на её размер, как то вздумывается "Да нахер столько читать". Вот решил понадеяться на авось, что у кого ниб да есть фрагменты чудодейственного кода.
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Спроси на minecraftforge.net там может кто знает.
     
  7. Автор темы
    Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Глянем-с. Правда, я там как пещерный человек в мегаполисе, ну да пофигу :)
     
  8. jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Ну вот чёт нашел...
    А так.. я не смыслю в java и если я не то кидаю - не судите...
    Код:
    import java.awt.*;
    import javax.swing.*;
    public class TestGradient extends JFrame
    {
    public TestGradient()
    {
      add(new MyPanel());
    }
    public static void main(String [] args)
    {
      JFrame f = new TestGradient();
      f.setBounds(100, 100, 400, 300);
      f.setDefaultCloseOperation(3);
      f.setVisible(true);
    }
    }
    class MyPanel extends JPanel
    {
    MyPanel()
    {
      JTable table = new JTable(5, 5);
      JScrollPane jsp = new JScrollPane(table);
      jsp.setPreferredSize(new Dimension(300, 100));
      add(jsp);
    }
    public void paintComponent(Graphics g)
    {
      GradientPaint gp = new GradientPaint(0, 0, Color.RED,
                                          0, getHeight() / 2, Color.BLUE, true);
      Graphics2D g2 = (Graphics2D)g;
      g2.setPaint(gp);
      g2.fillRect(0, 0, getWidth(), getHeight());
    }
    }

    Если надо - то вот на c#:
    Код:
    LinearGradientBrush linGrBrush = new LinearGradientBrush(
      new Point(0, 10),
      new Point(200, 10),
      Color.FromArgb(255, 0, 0, 0),
      Color.FromArgb(255, 255, 0, 0));
    
    float[] relativeIntensities = { 0.0f, 0.5f, 1.0f };
    float[] relativePositions = { 0.0f, 0.2f, 1.0f };
    
    //Create a Blend object and assign it to linGrBrush.
    Blend blend = new Blend();
    blend.Factors = relativeIntensities;
    blend.Positions = relativePositions;
    linGrBrush.Blend = blend;
    
    e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);
    e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);
     
  9. GloomyFolken

    GloomyFolken Старожил Пользователь

    Баллы:
    103
    Skype:
    alconost
    Почти уверен, что градиент развернет, если

    Код:
            tessellator.startDrawingQuads();
            tessellator.setColorRGBA_F(f1, f2, f3, f);
            tessellator.addVertex(par3, par2, zLevel);
            tessellator.addVertex(par1, par2, zLevel);
            tessellator.setColorRGBA_F(f5, f6, f7, f4);
            tessellator.addVertex(par1, par4, zLevel);
            tessellator.addVertex(par3, par4, zLevel);
            tessellator.draw();
    заменить на

    Код:
            tessellator.startDrawingQuads();
            tessellator.setColorRGBA_F(f1, f2, f3, f);
            tessellator.addVertex(par3, par4, zLevel);
            tessellator.addVertex(par3, par2, zLevel);
            tessellator.setColorRGBA_F(f5, f6, f7, f4);
            tessellator.addVertex(par1, par2, zLevel);
            tessellator.addVertex(par1, par4, zLevel);
            tessellator.draw();
     

Поделиться этой страницей