2012-04-03 2 views
2

Я изменил изображение курсора. Я пытаюсь изменить размер изображения курсора, но я не смог. Как я могу изменить его размер? Заранее спасибо.Как изменить размер изображения курсора в JavaFX 2.1?

+0

пожалуйста, укажите ваш код настройки изображения курсора. –

ответ

5

Вы можете изменить курсор, используя один из предопределенных типов курсоров или снабдив изображение собственным курсором, но система автоматически изменит размер предоставленного изображения на основе поддержки размера курсора базовой платформы. См. Документацию для ImageCursor.getBestSize() и ImageCursor.chooseBestCursor() для получения подробной информации об алгоритме, используемом для выбора определения фактического используемого размера курсора.

import javafx.application.Application; 
import javafx.scene.*; 
import javafx.scene.layout.*; 
import javafx.stage.*; 

public class ResizableCursor extends Application { 
    public static void main(String[] args) { launch(args); } 
    @Override public void start(Stage stage) { 
    StackPane layout = new StackPane(); 
    layout.setCursor(Cursor.cursor("http://icons.iconarchive.com/icons/artua/star-wars/256/Death-Star-icon.png")); 
    stage.setScene(new Scene(layout, 200, 200)); 
    stage.show(); 
    } 
} 

Если вы хотите иметь произвольный размер узел, который перемещается с помощью мыши и выглядит и действует как курсор (но не является курсор), вы можете установить курсор на Cursor.NONE, а затем перевести узел следовать местоположение мыши (как это делается в this example, когда вы нажимаете на круг, чтобы переместить его). Используя эту стратегию, будет казаться, что пользователь имеет пользовательский курсор произвольного размера, даже если он этого не делает.

Копия соответствующей документации для ImageCursor.getBestSize():

Возвращает поддерживаемый размер курсора, который находится ближе всего к указанному предпочтительного размера. Значение (0,0) возвращается, если платформа не поддерживает пользовательские курсоры.

Примечание: если используется изображение, размеры которого не соответствуют поддерживаемому размеру (как возвращается этим методом), реализация изменит размер изображения на поддерживаемый размер. Это может привести к потере качества.

Примечания: Эти значения могут отличаться в зависимости от операционной системы, видеокарты и разрешение экрана, но на момент написания этой статьи, образец Windows Vista машины возвращенного 32х32 для всех требуемых размеров, в то время как образца Mac и Linux машина возвращается запрошенный размер до максимум 64x64. Приложения должны содержать 32x32-курсор, который будет хорошо работать на всех платформах и может по желанию предоставить указатель 64x64 для тех платформ, на которых он поддерживается.

0
VBox vBoxMainLayout = new VBox(); 
Scene scene = new Scene(vBoxMainLayout); 

Image img = newImage(getClass().getResourceAsStream("image.png")); 
ImageCursor cursor = new ImageCursor(img, 30, 30); 
scene.setCursor(cursor); 
+0

thats мой код. Кстати, более старая версия Java, это похоже на возможную булочку на JavaFX 2.x, я не смог найти. –

+0

Возможно, вы уже это осознали, но в случае не заметите, что параметры 30, 30 задают координаты точки доступа для ImageCursor, а не размер ImageCursor. – jewelsea

-1
import java.awt.Toolkit; 
import javafx.scene.Cursor; 
import javafx.scene.image.Image; 

public class ColorChooser extends Cursor 
{ 

    public override function impl_getAWTCursor(): java.awt.Cursor { 

     def url = "{__DIR__}eyedropper.png"; 

     var toolkit = Toolkit.getDefaultToolkit(); 

     var image = Image{width:32 height:32 url:url}.bufferedImage; 
     var hotspot = new java.awt.Point(0,15); 
     var cursor = toolkit.createCustomCursor(image, hotspot "colorpicker"); 

     return cursor; 
    } 
} 
+0

Но этот код - старая версия. –

Смежные вопросы