📄 fimage.java
字号:
package core.ui.control;
import com.lang.FError;
import com.lang.RClass;
import com.xml.FXmlNode;
import core.ui.IItem;
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class FImage implements
IItem{
private Image _image;
public FImage(){
}
public FImage(Class clazz,
String name){
loadResource('/' + RClass.path(clazz).replace('.', '/') + '/' + name);
}
public FImage(Image image){
_image = image;
}
public FImage(String name){
loadResource(name);
}
public Image image(){
return _image;
}
public void loadConfig(FXmlNode config){
loadResource(config.get("src"));
}
public void loadResource(String name){
try{
_image = Image.createImage(name);
}catch(IOException e){
throw new FError(e, "Load resource " + name);
}
}
public Object nativeItem(){
return _image;
}
public FImage scale(int scales1,
int scales2){
return transform(_image.getWidth() * scales1 / scales2, _image.getHeight() * scales1 / scales2);
}
public FImage transform(int w,
int h){
int srcW = _image.getWidth();
int srcH = _image.getHeight();
int dstW = w, dstH = h;
Image tmp = Image.createImage(dstW, srcH);
Graphics g = tmp.getGraphics();
int scale = 16;
int delta = (srcW << scale) / dstW;
int pos = delta / 2;
for(int x = 0; x < dstW; x++){
g.setClip(x, 0, 1, srcH);
g.drawImage(_image, x - (pos >> scale), 0, Graphics.LEFT | Graphics.TOP);
pos += delta;
}
Image newImage = Image.createImage(dstW, dstH);
g = newImage.getGraphics();
delta = (srcH << scale) / dstH;
pos = delta / 2;
for(int y = 0; y < dstH; y++){
g.setClip(0, y, dstW, 1);
g.drawImage(tmp, 0, y - (pos >> scale), Graphics.LEFT | Graphics.TOP);
pos += delta;
}
return new FImage(newImage);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -