begin process at 2010 02 10 00:20:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > RECTANGLES

RECTANGLES


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Source .NET ( DotNet ) Classé sous :properties, propriétés, surcharge, aligner, rectangle Niveau :Débutant Date de création :24/10/2009 Date de mise à jour :26/10/2009 08:09:37 Vu / téléchargé :1 544 / 84

Auteur : krissssss

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Ce code montre l'usage des propriétés et indexeurs.

Il permet de créer des rectangles et de les aligner.

Le source contient des exemples d'utilisation.
- Alignement
- Homothétie
- Géométrie basique

Redimensionnez la fenêtre pour tester :-)

Source

  • // Créer des points
  • Point a=new Point(0,0);
  • Point b=new Point(10,10);
  • // Ajouter un offset
  • Point c=a+2; // Donne c(2,2)
  • // Ajouter des coordonnées
  • Point d=a+b; // Donne d(12,12)
  • // Calculer un point milieu
  • Point n=(a+b)/2
  • //Créer une ligne
  • Line l=new Line(a,b);
  • //Accéder à un point d'une ligne
  • Point m=l[0.5]; // Point milieu (a+b)/2
  • Point p=l[0]; // p==a
  • Point q=l[1]; // p=b
  • //Créer un rectangle
  • Rectangle r1=new Rectangle(a,b);//Points opposés
  • Rectangle r2=new Rectangle(1,2,3,4);// gauche,haut,droite,bas
  • //Accéder à un point d'un rectangle
  • Point x=r1.middleTop;//Milieu du côté supérieur
  • Point xp=r1[0,0.5];//Milieu du côté supérieur (.middleTop en est un alias)
  • //Accéder à la gauche
  • int gauche=r1.left;
  • //Aligner les centres
  • r1[0.5,0.5]=r2[0.5,0.5];
  • //Aligner le centre de r1 avec le coin inférieur droit de r2
  • r1[0.5,0.5]=r2[1,1];
  • //Redimensionner r1 pour qu'il rentre dans r2 en gardant ses proportions
  • r1.fill(r2)
// Créer des points
Point a=new Point(0,0);
Point b=new Point(10,10);

// Ajouter un offset
Point c=a+2; // Donne c(2,2)

// Ajouter des coordonnées
Point d=a+b; // Donne d(12,12)

// Calculer un point milieu
Point n=(a+b)/2

//Créer une ligne
Line l=new Line(a,b);

//Accéder à un point d'une ligne
Point m=l[0.5]; // Point milieu (a+b)/2
Point p=l[0]; // p==a
Point q=l[1]; // p=b

//Créer un rectangle
Rectangle r1=new Rectangle(a,b);//Points opposés
Rectangle r2=new Rectangle(1,2,3,4);// gauche,haut,droite,bas

//Accéder à un point d'un rectangle
Point x=r1.middleTop;//Milieu du côté supérieur
Point xp=r1[0,0.5];//Milieu du côté supérieur (.middleTop en est un alias)

//Accéder à la gauche
int gauche=r1.left;

//Aligner les centres
r1[0.5,0.5]=r2[0.5,0.5];
//Aligner le centre de r1 avec le coin inférieur droit de r2
r1[0.5,0.5]=r2[1,1];

//Redimensionner r1 pour qu'il rentre dans r2 en gardant ses proportions
r1.fill(r2)

 Conclusion

Avec ces classes, vous pouvez plus facilement calculer la position de divers éléments et les aligner.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 octobre 2009 15:22:56 :
-Utilisation de l'interface ICloneable -Utilisation de String.format() -Utilisation du double buffering -Utilisation de Dispose() -...

 Sources du même auteur

Source avec Zip Source avec une capture SODOKU MUSING (PERMUTATION & SODOKU)

 Sources de la même categorie

RECHERCHE DE DEUX SOUS ENSEMBLE DONT LES SOMMES DES ÉLÈMENTS... par deadhand
Source avec Zip Source avec une capture Source .NET (Dotnet) METHODE GRAPHIQUE EN PROGRAMMATION LINÉAIRE par vindos
Source avec Zip Source avec une capture SODOKU MUSING (PERMUTATION & SODOKU) par krissssss
Source avec Zip Source avec une capture Source .NET (Dotnet) ANALYSEUR LEXICAL ET SYNTAXIQUE DES FORMULES PROPOSITIONNELL... par boutemine
Source avec Zip Source avec une capture Source .NET (Dotnet) APPLICATION TRACEUR DE COURBE par Kite37

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) PETITE CLASSE POUR DESSINER UN RECTANGLE DE SELECTION DANS U... par vboussema
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET 2] ORDONNANCEMENT ET AFFICHAGE D'EVENEMENT DANS LE TEM... par TeBeCo
Source avec Zip Source avec une capture Source .NET (Dotnet) COMPOSANT HORLOGE ANALOGIQUE PERSONNALISABLE par taupe4
Source avec Zip Source avec une capture Source .NET (Dotnet) ROUNDEDRECTANGLE : CRÉEZ DES RECTANGLES AVEC DES COINS ARRON... par sebmafate
Source .NET (Dotnet) PROPRIETÉS par ousta

Commentaires et avis

Commentaire de loloof64 le 24/10/2009 09:00:37

Bonjour,

je suis un habitué du développement Java, et je débute dans la programmation C Sharp Dot Net (C#.Net).
Evidemment, je ne rencontre pas de difficultés majeures pour m'adapter. Toutefois, votre code est très intéressant pour moi étant donné qu'il met en évidence la surcharge d'opérateur pour un type défini par l'utilisateur.

Donc voici ma question : vos surcharges d'opérateur sont déclarées statique (ou membre de Classes ou lieu de membres d'instances), mais que se passe-t-il si on ne les déclare pas static ? L'appel de type (Point) c = (Point) a + 2; est-il encore valide ?

Merci d'avance pour votre réponse, mais si ma question pourrait vous paraître bête .

Loloof64

Commentaire de loloof64 le 24/10/2009 09:23:35

P.S : j'ai vu quue vous avez utilisé la méthode System.MemberWiseClone pour réaliser une copie superficielle de l'objet Point dans la méthode Clone . Dans la MSDN Library je n'ai pas réussi à trouver un éventuel équivalent afin de réaliser cette fois-ci une copie profonde (où les références sont également "copiées") . Ca existe? Vous la connaissez?
Merci d'avance pour votre réponse .

Commentaire de Lutinore le 24/10/2009 12:52:59 administrateur CS

kris, quelques améliorations possibles :

- Utilise un double buffer pour éviter le scintillement lors des dessins.

- Dans l'évènement "Paint" utilise l'objet "Graphics" de la classe "PaintEventArgs" à la place de la fonction "CreateGraphics".

- Tous les appels à "CreateGraphics" doivent être suivi d'un "Dispose".

- "Invalidate" est souvent plus efficace que "Refresh".

- Utilise "String.Format" pour concaténer plusieurs chaînes.

Commentaire de Lutinore le 24/10/2009 13:19:57 administrateur CS

loloof64,

- La surcharge d'un opérateur est toujours déclarée statique.

- Il faut implémenter sa propre fonction de copie profonde avec l'interface ICloneable ( ou pas ) la sérialisation peut dans certains cas automatiser la tâche.

Commentaire de loloof64 le 24/10/2009 17:02:39

Merci beaucoup Lutinore, je pense que pour mes prochaines copies profondes j'implémenterais l'interface ICloneable (voire je m'interesserait à la sérialisation que je ne connais pas encore en C sharp)

J'ai également noté le commentaire destiné à Krisss sur la méthode Invalidate (je connaissais déjà, grâce au Java, l'utilisation directe de Graphics, que j'ai donc recherchée avant de coder mes evenements Paint) .

Ces deux commentaires me seront très utiles .

Commentaire de krissssss le 24/10/2009 17:12:29

Apparemment, pour sérialiser, il suffit d'étiqueter la classe comme en Java.

Ensuite, on peut exclure des membres en les étiquetant aussi.

J'implémente la dite interface "ICloneable" maintenant.(C'est plus propre)

Commentaire de loloof64 le 24/10/2009 17:18:41

Au fait Lutinore,
-> merci pour la remarque pour le mot clé static pour la surcharge d'opérateurs
-> il peut utiliser System.StringBuilder pour concaténer plusieures chaines ? (Je le faisais avec qqch d'équivalent en Java)
-> Admettons que je surcharge (ou definisse dans ce cas-ci) la méthode paint d'une PictureBox juste pour réaliser un plateau de Puissance4 (nom déposé ici, désolé, ca sera plus explicite) SANS animation de la chute des pions joués : me recommanderiez-vous quand même d'utiliser la technique du double buffer ? (Ceux qui ont consultés mes sources Java ont peut être dû s'apercevoir que je ne le fais jamais.)

Merci beaucoup à toi ou à ceux qui lisent mon commentaires, et merci d'avance aux personnes qui y répondront .

Commentaire de loloof64 le 24/10/2009 17:21:49

Merci Krisss pour ta réponse,

qu'appelles-tu par étiquetter une classe ? (La sérialisation m'est peut être finallement inconnue même en Java, car pour moi sérialiser siginifiait simplement sauvegarder ses classes dans des fichiers avec les classes de Flux sortants => FileOutputStream par exemple)

Commentaire de krissssss le 24/10/2009 17:29:48

En java, tu fais
class Foo implements Serializable
...

En C#
[Serializable()]
class Foo
...

Puis après, dans les 2 langages il existe des fonctions/objets pour sérialiser. Par exemple, en java tu utilise un "object writer".

En C#, il en va de même :
MySerializableClass myObject = new MySerializableClass();
XmlSerializer mySerializer = new XmlSerializer(typeof(MySerializableClass));
StreamWriter myWriter = new StreamWriter("myFileName.xml");
mySerializer.Serialize(myWriter, myObject);
myWriter.Close();

Amuses-toi bien.(Qui tutoies est tutoyé:-p)

Commentaire de loloof64 le 24/10/2009 17:59:07

Merci beaucoup Kriss pour ta réponse :)

(Pas de problème pour le tutoiement, je vois les membres comme une "famille de codeurs", alors ca ne me dérange pas du tout.)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Dessins façon Paint [ par Franckyom50 ] J'aimerais savoir comment faire pour dessiner un rectangle, façon Paint : c-à-d cliquer a un endroit et en en restant appuyé, tracé un rectangle au fu Propriétés de l'imprimante en c# [ par Schad ] J'aimerais pouvoir accéder directement aux propriétés de l'imprimante courante sans passer par PrintDialog.Toute suggestion serait la bienvenue.Schad Propriétés de l'imprimante courante en C# [ par Schad ] J'aimerais accéder aux propriétés de l'imprimante courante sans passer par la fenêtre intermédiaire de PrintDialog.Toute suggestion sera la bienvenue. Récupérer la taille d'une string [ par cpetitjean ] Y aurait-il un moyen de récupérer la taille d'une string quand on fait un graphics.DrawString() ??En fait je voudrais dessiner un rectangle autour d'u Image, Pixel, ... ? [ par streetlife ] Bonjour!Comment faire pour construire une image ou un bitmap avec un rectangle en coordonnées ecran.En effet, je souhaite construire une image (ou aut Récupération des propriétés d'un fichier vidéo [ par taharban ] Je cherche à récupérer par programme les propriétés d'un fichier vidéo (.avi). Par exemple, résolution, durée, codecs.J'ai pensé à utiliser un Metafil dessiner un rectangle sur les controles [ par LeGnuff ] Bonjour !j'ai un objget Graphics associé à une formj'aurais aimé savoir s'il y avait un moyen d'utiliser la méthodeGraphics.DrawRectangle(...) en fais Changement des propriétés d'un imageButton côté client [ par guillrich ] Bonjour à tous,j'ai un petit problème: j'ai 6 imageButton de type System.Web.UI.WebControls sur ma page ASPX. Je change la couleur de bordure d'un ima création de compte utilisateur dans l'active directory [ par GillesD34 ] Bonjourj'ai créer une procédure pour ajouter des comptes dans l'active directory, elle ajoute bien les comptes utilisateur mais pour mettre à jour le DataGris & Alignement [ par koala59 ] J'aimerai savoir si dans un DataGrid si je peux aligner l'entete d'une colonne a droite et aligner le contenu de cette meme colonne sur la gauche.Car


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales