Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 20.08.2010
Сообщений: 20

Осевые трансформации, три изображения

18.01.2011, 21:46. Показов 1048. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно сделать чтобы три картинки по щелчку мыши одновременно передвигались, например машина и два колеса(тоесть машина по оси х вперед, а колеса по x вперед еще и крутятся(rotate))
В этом коде загружаются все три картинки как надо по координатам, но при нажатии на кнопку ни одна не едет(в данном коде должна ехать главная на 5пикс вправо)
Как вообще лучше осуществить движение трех картинок? Думал наложением с DST_OVER, еще пытался с JLayeredPane, не знаю как мне сделать так чтобы на большой картинке всегда были еще две маленькие. Постоянно либо большая пропадает, либо вообще не двигаются. Подайте хотябы идею, напишу сам.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
import javax.swing.*;
 
 
public class Main extends JFrame {
  
  private Image car, wheel1, wheel2;
  private java.net.URL imgURL; 
  private AffineTransform carTr, wheel1Tr, wheel2Tr = new AffineTransform();
  private Graphics2D g2d;
  private int first, step = 0;
  private Graphics g;
  private MediaTracker mt;
  private JLayeredPane lPane;
  
  public Main() {
    super("Ehat");
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
 
    Panel panel = new Panel();
    Container content = this.getContentPane();
    content.setLayout(new BorderLayout());
    JButton b1 = new JButton("EHat");
    panel.add(b1);
    b1.addActionListener((new ActionListener() {
      public void actionPerformed(ActionEvent e) {
               action();
        }
     }));
    content.add(panel,BorderLayout.SOUTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(800, 600);
    int x = (dim.width-this.getSize().width)/2;
    int y = (dim.height-this.getSize().height)/2;
    this.setLocation(x, y);
    this.setResizable(false);
    loadImages();
  }
  
  private void loadImages () {
    imgURL = getClass().getResource("antram_uzdavinukui.JPG");
    car = this.getToolkit().getImage(imgURL);
    imgURL = getClass().getResource("ratas.JPG");
    wheel1 = this.getToolkit().getImage(imgURL);
    wheel2 = this.getToolkit().getImage(imgURL);
    mt = new MediaTracker(this);
    mt.addImage(car , 0);
    mt.addImage(wheel1 , 0);
    mt.addImage(wheel2 , 0);
    try {
      mt.waitForAll();
    }
    catch (InterruptedException ex) {}
 
  }
 
  public void paint (Graphics g) {
   try {
       g2d = (Graphics2D) g;
    if (first < 1) {
      firstPaint(g2d);
    }
    else ride(g2d);
   } catch (Exception e) {
    }
  }
  
  private void firstPaint(Graphics g) {
      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      g2d.setBackground(Color.WHITE);
      g2d.drawImage(car, new AffineTransform(), this);
      g2d.drawImage(wheel1, 115, 353, this);
      g2d.drawImage(wheel2, 235, 353, this);
  }
 
  public void action () {
    first++;
    step++;
    repaint();
  }
  
  public void ride (Graphics g) {
    System.out.println("RIIIDE:(");
    carTr.translate(5, 0);
    g2d.drawImage(car, carTr, this);
  }
  public static void main(String args[]) {
    new Main().show();
  }
 
}
Картинки:
Название: ratas.jpg
Просмотров: 138

Размер: 1.8 Кб
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2011, 21:46
Ответы с готовыми решениями:

Разрезка изображения на три части
Вопрос собственно в названии темы, а вот в чем суть: Есть у меня класс, его конструктор получает на вход изображение, оно немного...

Построить три изображения поверхности вращения с вырезом
Два вида вроде сделал ), остался тока третий. Заранее спасибо!

Трансформации объектов
Можете подсказать как сделать функционал трансформации моделей как в обычных игровых движках? Т.е. заспавнил объект с идентификатором и...

1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
19.01.2011, 13:37
Если тебе нужно тупо нарисовать движущийся трактор, то это проще сделать руками . И весь рисунок отрисовывать относительно какой-то базовой точки, которую и смещать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2011, 13:37
Помогаю со студенческими работами здесь

3D и матрицы трансформации
Я пишу 3D графический движок, и вот возникла проблема: я создал свой класс матрицы, а в ней функцию &quot;CreateScale&quot; принимающую...

Точка трансформации
Подскажите а можно ли изменять точку трансформации программно???

Подсобите, в трансформации
Ребята, такая история. По работе приехал в штаты и купил ноутбук Lenovo U530, проц i7, 8 озу и все такое. Дома у меня стоит собранный...

Трансформации 3D моделей
Здравствуйте. Посоветуйте книги по транформации 3D моделей. Конкретно интересуют алгоритмы морфинга. Но не только. Скачивал...

Реализация трансформации картинки
http://s003.***********/i204/1311/0d/5b24fa9a5b34.png Как реализовать на jQuery(на css тоже интересно) трансформацию картинки как на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru