TransparentImgae Abhängig von winkel


Khaled

Grünschnabel
#1
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 zum:(0-->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:

zerix

Hausmeister
Moderator
#3
Hallo,

ich war mal so frei und habe die Umfrage entfernt, da sie keinen Sinn ergeben hat. Ich habe auch mal die Code Tags um den normalen Text entfernt.
Ich bitte dich auch darum nicht einen Beitrag zu melden um Hilfe zu deiner Frage zu bekommen!

Ich verstehe im Moment deine Frage nicht wirklich, könntest du bitte erklären wo dein Problem genau liegt?
Es sieht so aus, als wäre deutsch nicht deine Muttersprache, falls du englisch besser kannst, kannst du dein Problem auch in englisch schildern.

Viele Grüße
Sascha
 

Khaled

Grünschnabel
#4
Soory ja stimmt bin nicht deustcher.die frage das,ich in
manageImage methode wo switch ist die werte zwischen(0) und 360 geben kann nicht nur 0.90,180,270