Я возился с перераспределением массивов пикселей. Мне удалось сделать некоторый код, который масштабирует пиксели при их рендеринге. Проблема с кодом заключается в том, что я могу масштабировать пиксели только целыми числами (1, 2, 3 и т.д.). Я хочу иметь возможность масштабировать пиксели с помощью двойного (.001,.002 и т.д.), Поэтому я не ограничусь лишь несколькими размерами изображений. Вот код, который я написал:
public void draw(Sprite s, int xCord, int yCord, int scale){
for(int y = 0; y < s.getHeight()*scale; y++){
for(int x = 0; x <s.getWidth()*scale; x++){
pixels[(x+xCord) +(y+yCord)*this.width]
= s.pixels[(x/scale+ y/scale * s.getWidth())];
}
}
}
Может ли это быть легко изменено, чтобы обеспечить нецелое числовое число?
Класс Sprite знает свою собственную ширину и высоту, заданные s.getWidth()
и s.getHeight()
. Высота и ширина - это фактические размеры в пикселях.png, когда они были прочитаны.
Для гибкости при выборе алгоритма передискретизации используйте AffineTransformOp
, как показано здесь, или просто позвольте графическому контексту обрабатывать его, как показано здесь.