Java: tracé de base, le dessin d'un point/point/pixel
J'ai besoin d'avoir de l' un panneau à l'intérieur de laquelle je serais en mesure de tirer. Je veux être en mesure de dessiner pixel par pixel.
ps: je n'ai pas besoin de lignes/cercles d'autres primitives.
pps: la bibliothèque graphique n'a pas vraiment d'importance, il peut être awt, swing, qt.. quoi que ce soit. Je veux juste avoir quelque chose qui est habituellement représenté par Bufferedimage ou somethign comme ça où vous définissez les couleurs de pixels et de rendre ensuite à l'écran.
Malheureusement, java n'a pas de méthode pour dessiner d'un seul point, au lieu de cela, vous devez utiliser
c'est un peu dommage, et n'est-ce pas ajouter un horrible dessus? Je veux juste être en mesure d'afficher de grands ensembles de données..
drawLine
avec un même point pour les deux start & fin.c'est un peu dommage, et n'est-ce pas ajouter un horrible dessus? Je veux juste être en mesure d'afficher de grands ensembles de données..
OriginalL'auteur Dmitry Avtonomov | 2013-02-13
Vous devez vous connecter pour publier un commentaire.
Je suggère un
BufferedImage
pour que, affiche....dans un
JLabel
- comme on le voit dans cette réponse.Bien sûr, une fois que nous avons une instance de
BufferedImage
, nous pouvonssetRGB(..)
.OriginalL'auteur Andrew Thompson
Un exemple d'une façon de le faire:
et puis de l'intérieur substituée paintComponent(Graphics g)
Vous savez peut-être déjà, mais au cas où: http://docs.oracle.com/javase/tutorial/2d/index.html
OriginalL'auteur Jool
Si vous honnêtement nécessité de rendre pixel par pixel, j'ai fait ça à longueur de hotspot visualisation morceau de logiciel que j'ai écrit pour un laboratoire de recherche.
Ce que vous voulez est BufferedImage.setRGB(..) -- si vous êtes dessin pixel par pixel, je suppose que vous avez mis en place un algorithme qui permettra de rendre les valeurs RVB de chaque pixel (un peu comme nous l'avons fait avec la chaleur des cartes). C'est ce que nous avons utilisé dans un vieux IE-compatible Applet retour dans la journée. A travaillé comme un charme et a été relativement rapide compte tenu de ce qu'il faisait.
Malheureusement tout le temps de vous manipuler les valeurs RVB directement dans un BufferedImage, il deviendra en mémoire cache, par la sauvegarde de la mémoire vidéo.
Depuis Java 7, j'ai entendu dire que le sous-jacent J2D mise en œuvre procède à une tentative de re-mise en cache de l'image dans la mémoire vidéo une fois que les manipulations d'arrêt et le rendu est fait au nouveau -- par exemple, alors que vous rendez la carte de la chaleur, il n'est pas accéléré, mais une fois qu'il est rendu, comme vous faites glisser la fenêtre autour de et de travailler avec l'application, la sauvegarde des données d'image peut devenir ré-accéléré.
la plupart de bienvenue! Lorsque nous avons mis en œuvre de zoom, nous avons gardé autour de la finale de BufferedImage à chaque niveau de zoom (de sorte qu'ils n'ont pas à être re-rendus), mais si la résolution est trop élevée, ce souffle de votre TAS de sorte que vous pouvez les écrire dans un PNG sur le disque et charger/re-rendre à la volée ou égaux astuce si vous en avez besoin. Pour nous, au moins, il était encore plus rapide à faire que de recalculer-et-rerender le cadre.
OriginalL'auteur Riyad Kalla
Si vous voulez faire quelque chose rapidement, vous pouvez simplement utiliser les méthodes Graphiques setColor et drawLine. Par exemple:
J'ai utilisé cette technique et ce n'était pas terriblement lent. Je n'ai pas comparé ça à l'aide de BufferedImage objets.
OriginalL'auteur davtom
Un peu tard ici, mais vous pouvez toujours le faire de la manière jeu Java programmeurs de le faire, avec un
Screen
classe:Et puis dans votre classe principale:
Qui devrait fonctionner, je pense.
OriginalL'auteur JimmyM