第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使圖像不因旋轉(zhuǎn)而調(diào)整大?。ㄔ?JavaFX 中)?

如何使圖像不因旋轉(zhuǎn)而調(diào)整大?。ㄔ?JavaFX 中)?

繁星淼淼 2022-12-15 17:05:59
我有一個(gè)旋轉(zhuǎn)圖像并使用 drawImage 方法將其顯示到畫布上的方法。但是,當(dāng)旋轉(zhuǎn)圖片時(shí),圖片會(huì)收縮和變大,因?yàn)閷挾群透叨葧?huì)發(fā)生變化(比如旋轉(zhuǎn)一個(gè)正方形,圖片的寬度和高度會(huì)發(fā)生變化)。這是方法:public void rotateImage(GraphicsContext gc, double speed) {    erase(gc);  // erases the previous image    imgView.setRotate(imgView.getRotate() + speed);    SnapshotParameters params = new SnapshotParameters();    params.setFill(Color.TRANSPARENT);    image = imgView.snapshot(params, null);    gc.drawImage(image, pos.x, pos.y, width, height);}任何幫助將不勝感激,如果需要,我可以發(fā)布其余代碼。
查看完整描述

1 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

具有所提供參數(shù)的快照使用父節(jié)點(diǎn)中的尺寸來(lái)確定圖像的大小。在大多數(shù)情況下,旋轉(zhuǎn)圖像會(huì)產(chǎn)生與原始圖像不同的尺寸。在這些情況下,快照比原始圖像大。(考慮旋轉(zhuǎn) 45° 的正方形圖像;旋轉(zhuǎn)后圖像的寬度和高度是原始圖像對(duì)角線的大小,即大 0 倍sqrt(2) = 1.41...)。


由于drawImage縮放繪制的圖像以適合大小為 的矩形width x height,所以大于此大小的快照將按比例縮小。


使用 的變換GraphicsContext來(lái)避免Image每次調(diào)用該方法時(shí)都創(chuàng)建一個(gè)新實(shí)例,并避免縮放圖像。


例子


@Override

public void start(Stage primaryStage) {

    Image image = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Smiley.svg/240px-Smiley.svg.png");

    Canvas canvas = new Canvas(500, 500);

    GraphicsContext context = canvas.getGraphicsContext2D();

    Slider slider = new Slider(0, 360, 0);

    Button btn = new Button("draw");

    VBox root = new VBox(canvas, slider, btn);



    btn.setOnAction(evt -> {

        context.setFill(Color.TRANSPARENT);

        context.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());


        double posX = 200;

        double posY = 150;


        context.save();


        // apply transformation that puts makes (posX, posY) the point

        // where (0,0) is drawn and rotate

        context.translate(posX, posY);

        context.rotate(slider.getValue());


        // draw with center at (0, 0)

        context.drawImage(image, -image.getWidth()/2, -image.getHeight()/2);


        // undo transformations

        context.restore();

    });


    primaryStage.setScene(new Scene(root));

    primaryStage.show();

}


查看完整回答
反對(duì) 回復(fù) 2022-12-15
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)