Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.widgets.Display;
public class ImageManager {
public static void main(String[] args) {
final Display display = new Display();
String imagePath = "C:\\Users\\k.algoursh\\Desktop\\as.jpg";
Image image = new Image(display, setImageTransparent(display,imagePath,90,0,255));
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] { image.getImageData() };
String saveImagePath = "C:\\Users\\k.algoursh\\Documents\\DB\\TranparentImage.png";
imageLoader.save(saveImagePath, SWT.IMAGE_PNG);
}
public static ImageData setImageTransparent(Display display, String path,int angle,int opacityStart,int opacityEnde) {
Image image = new Image(display, path);
ImageData imageData = image.getImageData();
for (int x = 0; x < imageData.width; x++) {
for (int y = 0; y < imageData.height; y++) {
manageImage(x, y, imageData,angle,opacityStart,opacityEnde);
}
}
return imageData;
}
public static void manageImage(int x, int y, ImageData imageData, int angle, int opacityStart, int opacityEnde) {
double hight = imageData.height;
double width = imageData.width;
double valueBrangeX = (opacityEnde - opacityStart) / width;
double valueBrangeY = (opacityEnde - opacityStart) / hight;
switch (angle) {
case 0:
imageData.setAlpha(x, y, (opacityEnde) - (int) (valueBrangeY * (y + 1)));
break;
case 90:
imageData.setAlpha(x, y, (int) (opacityStart + valueBrangeX * (x + 1)));
break;
case 180:
imageData.setAlpha(x, y, (int) (opacityStart + valueBrangeY * (y + 1)));
break;
case 270:
imageData.setAlpha(x, y, (opacityEnde) - ((int) (valueBrangeX * (x + 1))));
break;
}
}
}
Guten Tag,ich habe here ein Bild transparent gemacht(setalpha=0)für bestemten Winkel .
wenn Winkel=0 dann mache ich transparent von recht(set apha=0) Skalieren nach linq (setapha=255)
wenn Winkel=180 dann mache ich transparent von linq (set apha=0) Skalieren nachrecht(setapha=255)
wenn Winkel=0 dann mache ich transparent von oben(set apha=0) Skalieren nach unten(setapha=255)
wenn Winkel=180 dann mache ich transparent von unten(set apha=0) Skalieren Skalieren oben(setapha=255)
mit winkel wähle ich aus direction zum0-->180,45---->255)
die Frage ist wie ich Winkel als Parameter von 0 bis 360 geben kann? zm:15,30,45.....360
Zuletzt bearbeitet von einem Moderator: