Comment dessinez-vous une boîte carrée remplie dans Java qui est exactement au centre d'une fenêtre d'applet? et lors du redimensionnement de la fenêtre, il est centré horizontalement et verticalement dans la fenêtre de l'applet? Je veux qu'il s'adapte à la hauteur verticale de l'écran mais reste carré même comme les bords horizontaux. Si la fenêtre est redimensionnée pour être trop étroite, les côtés peuvent être coupés?Comment dessiner une boîte carrée remplie dans Java qui est exactement au centre d'une fenêtre d'applet?
Répondre
Voici un exemple de panneau qui fera un carré de 30px au milieu, ou redimensionnera avec le panneau. Peut-être qu'il peut vous donner assez pour faire des progrès.
private class MyPanel extends JPanel{
int height = 30;//30 pixels high.
int width = 30;//30 pixels wide.
boolean resize = true;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int verticalCenter = this.getHeight()/2;
int horizontalCenter = this.getWidth()/2;
if(!resize){
int topLeftSquareCornerY = verticalCenter - (height/2);
int topLeftSquareCornerX = horizontalCenter - (width/2);
g.setColor(Color.BLUE);
g.drawRect(topLeftSquareCornerX, topLeftSquareCornerY, width, height);
}else{
g.setColor(Color.GREEN);
g.drawRect(15,15,(this.getWidth()-30), this.getHeight()-30);
}
}
}
merci beaucoup pour l'aide ... je l'ai compris en partie parce que j'ai trouvé un mauvais calcul dans mon code. Mais merci pour l'aide. vous les gars, vous avez été extrêmement utile. :) – Tom
On dirait que votre problème de base est de savoir comment placer un rectangle donné correctement. Vous devez avoir le middle de l'écran dans le middle du rectangle.
La distance entre le milieu du rectangle et ses côtés est respectivement la moitié de la hauteur et de la longueur.
Donc x1, x2 = milieu_x ± largeur/2, et y1, y2 = milieu_y ± hauteur/2.
Je suppose que vous voulez dessiner un carré avec un size
fixe qui reste dans le center
du panneau que le panneau est redimensionné. Une approche à ces problèmes est de commencer à la fin et de travailler en arrière. Vous savez à propos de fillRect()
, alors écrivez ce que vous devez "remplir les blancs" requis par cette méthode. Appelez les coordonnées center
x
et y
. Le coin supérieur serait la moitié de size
et le coin gauche serait la moitié de size
à gauche; la largeur et la hauteur de la place serait juste size
:
g.fillRect(left, top, width, height);
g.fillRect(x - size/2, y - size/2, size, size);
maintenant revenir en arrière et figure que x
et y
sont la largeur de la moitié du panneau et de la hauteur, respectivement:
int x = getWidth()/2;
int y = getHeight()/2;
Maintenant, mettez tous ensemble dans votre méthode paintComponent()
.
- 1. Créer une fenêtre carrée C++
- 2. javascript pour superposer une fenêtre modale qui est alignée au centre
- 3. CSS - Comment déplacer une boîte sur cette page au centre
- 4. centre une boîte div
- 5. Blackberry - dessiner une étiquette au centre de ButtonField personnalisé?
- 6. Dessin Opengl au centre de la fenêtre
- 7. HTML/CSS dessinant une fenêtre carrée dans un masque css
- 8. Comment dessiner une onde carrée en utilisant ZedGraph?
- 9. dessiner le texte au centre de l'image en utilisant PIL
- 10. Est-il possible d'afficher une fenêtre modale dans l'application SCSF au centre de l'écran?
- 11. Centre une boîte de largeur dynamique
- 12. Comment dessiner cette fenêtre?
- 13. Comment dessiner une capture d'écran "aperçu" fenêtre?
- 14. Java Swing: positionner la boîte de dialogue au-dessus de la fenêtre existante
- 15. En Java, comment dessiner un texte multiligne avec une police à redimensionnement automatique qui doit tenir dans une limite
- 16. "Zoomer" des éléments sur une page tout en gardant le centre de l'agrandissement au centre de la fenêtre
- 17. Aligner la fenêtre de dialogue au centre de l'écran
- 18. Positionner une boîte de dialogue au centre de la zone visible d'une fenêtre de navigateur en utilisant javascript/DOM
- 19. Comment conserver une div au centre de la page?
- 20. Comment insérer des images dans une boîte carrée de 200 pixels en utilisant CSS?
- 21. Faire une image carrée
- 22. iPhone: comment dessiner du texte dans une fenêtre?
- 23. ce qui est délégué exactement en C#
- 24. Soumettre uniquement si une condition est remplie?
- 25. Comment afficher une fenêtre au-dessus avec Java?
- 26. iPhone, comment ajouter une étiquette pour que le texte soit exactement au centre de l'écran, vert et hotiz?
- 27. Comment dessiner une fenêtre d'angle ronde une bordure?
- 28. CSS/HTML: élément qui est centré centre wont droit
- 29. Écrasez .data() si une condition est remplie
- 30. Array.BinarySearch où une certaine condition est remplie
Est-ce que c'est par hasard? –
Vous cherchez à écrire le code de peinture vous-même, ou cherchez-vous un gestionnaire de disposition pour garder un composant centré? Aussi, qu'entendez-vous par "reste carré même comme les bords de largeur horizontale"? Voulez-vous dire que vous voulez qu'il reste une taille minimale? – aperkins
oui c'est la dernière partie de ma mission que je fais depuis quelques jours avant de décider que je dois jeter l'éponge. C'est un code de peinture dans lequel j'ai utilisé fillRect pour composer. mais le problème est quand j'ai essayé de le centrer, par exemple. fillRect (largeur * 5/10, hauteur * 5/10, largeur/10/2, hauteur/10/2); il centre, mais seulement le haut gauche (x, y cordes) le centre et le milieu pas de l'image. désolé, je veux dire reste carré même lorsque la largeur horizontale change-> comme si elle est redimensionnée à un rectangle très étroit, il serait alors recadré au rectangle – Tom