Ben si c'est possible, mais il faut accepter alors que les ordonnées se lisent de haut en bas, et non pas de bas en haut !
Et si on veut faire cela, c'est tout simple, on fait répondre YES à la vue lorsqu'on lui demande si elle suit cette logique ! Où est le problème ? Où est la question ?
-(BOOL) isFlipped { return YES; }
Il faut alors bien faire attention lorsqu'on prend les coordonnées via un event de les lire dans cette vue par une méthode convert convenable.
Merci ! C'est parfais comme ça !!! <br /> J'ai une NSSplitView qui redimenssionne ma NSScroolView comment faire pour savoir quand cette dernière est redimensionné ?
Comme le montre ton programme, utiliser scrollToPoint: fonctionne bien en statique. D'ailleurs c'est une aberration, comment peut-on déplacer l'ascenseur quand il n'y a pas d'ascenseur ?
Cependant, j'ai fait un autre essai. Il s'agit d'une vue:
Ce que j'essaie de faire est de centre la vue en dynamique, c'est à dire, quand on redimensionne la fenêtre et la scrollview se trouvant dedans. Et là , ça ne marche absolument pas.
Merci pour la source, c'est en effet pas si simple que ça ! J'abandonne le centrage car c'est un confort et l'implémentation est possible plus tard
Le garde par contre le fait d'avoir l'origine en haut et à gauche car c'est ce que je cherche pour mes objets. <br />Comme c'est un Progiciel à diffusion très très limité cela importe peux que l'affichage soit centré
Je vais me mettre à écrire mes objets pour arriver à les créer, editer, supprimer avec la palette des propriétés et je verrais un peu plus tard pour la modification à la souris. Si j'arrive à faire ça et que je lit et écrit les formats de fichiers correctement, j'aurais déjà réécrit tout le logiciel RB actuel ! J'aurais gagné en vitesse d'exécution (mon but). :kicking:
Comme le montre ton programme, utiliser scrollToPoint: fonctionne bien en statique. D'ailleurs c'est une aberration, comment peut-on déplacer l'ascenseur quand il n'y a pas d'ascenseur ?
scrollToPoint: ne fait que changer l'origine du rect "bounds" du clipview, en quelque sorte cela déplace en translation la zone où on regarde cette clipview, et donc son contenu.
dans 1234250966:
Ce que j'essaie de faire est de centre la vue en dynamique, c'est à dire, quand on redimensionne la fenêtre et la scrollview se trouvant dedans. Et là , ça ne marche absolument pas.
Si on veux faire bouger la fenêtre, le split view et les ascenseurs et que tout se repositionne automatiquement, c'est sûr qu'il faut prendre un papier et un crayon pour faire les formules adéquates, ce que personnellement je ne ferais pas ! Par contre, je ne vois pas pourquoi un scrollToPoint: bien calculé ne marcherait pas ? peut-être est-ce l'oubli de setNeedsDisplay: dans le setFrame ?
1) [self setNeedsDisplay:YES]; a pour effet de provoquer une exécution (entre autres ) de drawRect. En toute logique, ton programme devrait tourner indéfiniment. Supprimes-le.
[NSGraphicsContext saveGraphicsState]; Ne sert à rien dans un drawRect: A supprimer comme le restore associé.
La fonction draw Ce n'est pas le rôle d'un NSObject de faire le dessin à l'écran. Définit plutôt un objet NSBezierPath * bezierPath dans ta classe et fais une boucle
[NSGraphicsContext saveGraphicsState]; Ne sert à rien dans un drawRect: A supprimer comme le restore associé.
Si j'en ai besoin car je fait une modification affine sur le context avant d'appeler les draw (c'est le zoom). Je le restaure pour dessiner en dernier le bord de ma NSView !
Voilà une petite vidéo de l'utilisation du logiciel que j'ai réalisé. La mise en place de la sélection d'un objet avec la souris et sont déplacement à été fait en quelques lignes de code. Là je vois encore une fois la simplicité et l'optimisation de COCOA.
La vidéo : rtsp://extranet.sygeste.com/video_exemple_PMC.mp4 Attention c'est en streaming et de relativement bonne qualité. à‰tant données que la connexion du serveur n'est pas très élevé veuillez être patient et attendre le chargement de la vidéo
Nouveau problème !! Comment faire pour dessiner le texte ? J'ai vu qu'il est possible de dessiner du texte dans un contexte graphique avec NSString. Mais comment faire pour la détection de l'appartenance d'un point à un NSString ? Est t'il possible d'avoir un rectangle NSBezierPath transparent juste pour la gestion de la détection d'appartenance d'un point?
Il n'a pas besoin d'être dessiné. Comment fais-tu actuellement pour détecter le dessin concerné par le clic de souris ?
Il est temps de réfléchir pour faire une base solide/robuste à tout ce que tu pourras ajouter par la suite. • Le Model • La Vue • Le Contrôleur Actuellement, il me semble que c'est le Model qui est encore flou.
C'est juste qu'actuellement je pensait que seul les NSBezierPath dessiné réponde à containsPoint. C'est débile comme idée !!!
Le Model est bien construit car j'ai une class "générique" qui gère la position et autre éléments commun de tout type d'objet. Ensuite je sous-classe pour apporté les spécificités de chaque objet.
Tu as aussi NSRectContainsPoint, mais si tu fais ton rectangle par un BezierPath , évidemment containsPoint: de NSBezierPath va marcher aussi.
containsPoint: Returns a Boolean value indicating whether the receiver contains the specified point.
- (BOOL)containsPoint:(NSPoint)aPoint
Parameters aPoint The point to test against the path, specified in the path object's coordinate system. Return Value YES if the path's enclosed area contains the specified point; otherwise, NO.
cependant attention à la définition de "enclosed Area" qui n'est pas clair lorsque les arcs/lignes se recoupent.
Le Model est bien construit car j'ai une class "générique" qui gère la position et autre éléments commun de tout type d'objet. Ensuite je sous-classe pour apporté les spécificités de chaque objet.
Merci pour ces précisions. Mais j'ai que des rectangles et lignes (horizontale ou verticale) comme géométrie de base. J'ai pas de diagonale, courbe, rond, etc...
Deux questions idiotes :
La première comment mettre un texte en gras et italic ? Actuellement, j'arrive à souligné, changer la police, la taille mais pas à mettre en gras ou italic. Le Fait d'ajouter "-Bold" au nom de la police fait planter l'application. J'ai vu NSBoldMaskFont mais je sais pas à quoi ça correspond !!!
La deuxième questions est : comment faire pour avoir la même chose que le sélecteur de vue de la fenêtre des propriétés de IB (cf pj) ? C'est la ToolBarre ou un NSSegmentedButton ?
La première comment mettre un texte en gras et italic ? Actuellement, j'arrive à souligné, changer la police, la taille mais pas à mettre en gras ou italic. Le Fait d'ajouter "-Bold" au nom de la police fait planter l'application. J'ai vu NSBoldMaskFont mais je sais pas à quoi ça correspond !!!
Ci-joint une appli (non encore terminée, je suis sur autre chose) qui te donne une liste exhaustive des attributs graphiques
Merci pour ces précisions. Mais j'ai que des rectangles et lignes (horizontale ou verticale) comme géométrie de base. J'ai pas de diagonale, courbe, rond, etc...
Mais cela viendra ..
dans 1234360582:
La première comment mettre un texte en gras et italic ? Actuellement, j'arrive à souligné, changer la police, la taille mais pas à mettre en gras ou italic. Le Fait d'ajouter "-Bold" au nom de la police fait planter l'application. J'ai vu NSBoldMaskFont mais je sais pas à quoi ça correspond !!!
La deuxième questions est : comment faire pour avoir la même chose que le sélecteur de vue de la fenêtre des propriétés de IB (cf pj) ? C'est la ToolBarre ou un NSSegmentedButton ?
Ah oui, tu demandes pour mettre une NSToolBar à ton appli. Dans IB tu glisse-déposes un objet de ce type. Tu cliques dessus et tu paramètres les images ajoutées.
Réponses
Et si on veut faire cela, c'est tout simple, on fait répondre YES à la vue lorsqu'on lui demande si elle suit cette logique ! Où est le problème ? Où est la question ?
-(BOOL) isFlipped {
return YES;
}
Il faut alors bien faire attention lorsqu'on prend les coordonnées via un event de les lire dans cette vue par une méthode convert convenable.
ci-joint un mini-projet d'essai
J'ai une NSSplitView qui redimenssionne ma NSScroolView comment faire pour savoir quand cette dernière est redimensionné ?
Cependant, j'ai fait un autre essai. Il s'agit d'une vue:
Ce que j'essaie de faire est de centre la vue en dynamique, c'est à dire, quand on redimensionne la fenêtre et la scrollview se trouvant dedans. Et là , ça ne marche absolument pas.
J'ai trouvé ça sur CocoaDev:
http://www.cocoadev.com/index.pl?CenteringInsideNSScrollView
Bref, ce n'est pas aussi simple...
Le garde par contre le fait d'avoir l'origine en haut et à gauche car c'est ce que je cherche pour mes objets.
Je vais me mettre à écrire mes objets pour arriver à les créer, editer, supprimer avec la palette des propriétés et je verrais un peu plus tard pour la modification à la souris. Si j'arrive à faire ça et que je lit et écrit les formats de fichiers correctement, j'aurais déjà réécrit tout le logiciel RB actuel ! J'aurais gagné en vitesse d'exécution (mon but). :kicking:
La split view envoie deux messages à son delegate , le premier juste avant le redimensionnement, le second juste après :
- (void)splitViewWillResizeSubviews:(NSNotification *)aNotification
- (void)splitViewDidResizeSubviews:(NSNotification *)aNotification
Donc on choisit un delegate pour la split view (connexion dans IB par exemple) et il s'occupe de faire les changements nécessaires.
scrollToPoint: ne fait que changer l'origine du rect "bounds" du clipview, en quelque sorte cela déplace en translation la zone où on regarde cette clipview, et donc son contenu.
Si on veux faire bouger la fenêtre, le split view et les ascenseurs et que tout se repositionne automatiquement, c'est sûr qu'il faut prendre un papier et un crayon pour faire les formules adéquates, ce que personnellement je ne ferais pas !
Par contre, je ne vois pas pourquoi un scrollToPoint: bien calculé ne marcherait pas ? peut-être est-ce l'oubli de setNeedsDisplay: dans le setFrame ?
Voici ma fonction "drawRect" qui appel toutes les fonctions draw :
Et voici la fonction "draw" de mon objet trait :
L'objet trait hérite de NSObject.
Le problème c'est que rien ne s'affiche :-\\ Il est où le problème ?
a pour effet de provoquer une exécution (entre autres ) de drawRect. En toute logique, ton programme devrait tourner indéfiniment. Supprimes-le.
[NSGraphicsContext saveGraphicsState];
Ne sert à rien dans un drawRect:
A supprimer comme le restore associé.
La fonction draw
Ce n'est pas le rôle d'un NSObject de faire le dessin à l'écran.
Définit plutôt un objet NSBezierPath * bezierPath dans ta classe et fais une boucle
}
Si j'en ai besoin car je fait une modification affine sur le context avant d'appeler les draw (c'est le zoom). Je le restaure pour dessiner en dernier le bord de ma NSView !
J'ai un autre problème !
Lorsque je récupère la position de la souris lors du "mouseDown", je corrige les coordonnées pour ma vue en faisant :
Mais le problème c'est que la valeur de X n'est pas juste. Elle est donnée par rapport à la fenêtre et non par rapport à le vue. Comment faire ?
Ben si :
- (void)drawRect:(NSRect)rect {
NSRect littleRect=NSMakeRect(0.,0.,20.,20.);
NSBezierPath * bezierPath=[NSBezierPath bezierPathWithOvalInRect:littleRect];
[[NSColor whiteColor] set];
// NSRectFill(littleRect);
[bezierPath fill];
NSAffineTransform * xform = [NSAffineTransform transform];
// Draw item 1
[xform translateXBy:50.0 yBy:50.0];
[xform concat];
[[NSColor blueColor] set];
// NSRectFill(littleRect);
[bezierPath fill];
[[NSAffineTransform transform] set];
[xform translateXBy:150.0 yBy:20.0];
[xform concat];
[[NSColor redColor] set];
// NSRectFill(littleRect);
[bezierPath fill];
}
convertPoint:fromView:
Converts a point from the coordinate system of a given view to that of the receiver.
- (NSPoint)convertPoint:(NSPoint)aPoint fromView:(NSView *)aView
Parameters
aPoint
A point specifying a location in the coordinate system of aView.
Essaie :
NSPoint pointInSelfCoordinates =[self convertPoint:[theEvent locationInWindow] fromView:nil]
La vidéo : rtsp://extranet.sygeste.com/video_exemple_PMC.mp4
Attention c'est en streaming et de relativement bonne qualité. à‰tant données que la connexion du serveur n'est pas très élevé veuillez être patient et attendre le chargement de la vidéo
Comment faire pour dessiner le texte ? J'ai vu qu'il est possible de dessiner du texte dans un contexte graphique avec NSString. Mais comment faire pour la détection de l'appartenance d'un point à un NSString ?
Est t'il possible d'avoir un rectangle NSBezierPath transparent juste pour la gestion de la détection d'appartenance d'un point?
Tu as une méthode de NSString ou NSAttributedString qui te donne le rectangle occupé par la string. (c'est peut-être dans les additions de AppKit pour ces chaà®nes)
pour être plus précis
Il est temps de réfléchir pour faire une base solide/robuste à tout ce que tu pourras ajouter par la suite.
• Le Model
• La Vue
• Le Contrôleur
Actuellement, il me semble que c'est le Model qui est encore flou.
Le Model est bien construit car j'ai une class "générique" qui gère la position et autre éléments commun de tout type d'objet. Ensuite je sous-classe pour apporté les spécificités de chaque objet.
containsPoint:
Returns a Boolean value indicating whether the receiver contains the specified point.
- (BOOL)containsPoint:(NSPoint)aPoint
Parameters
aPoint
The point to test against the path, specified in the path object's coordinate system.
Return Value
YES if the path's enclosed area contains the specified point; otherwise, NO.
cependant attention à la définition de "enclosed Area" qui n'est pas clair lorsque les arcs/lignes se recoupent.
Voir Winding Rules
Deux questions idiotes :
La première comment mettre un texte en gras et italic ?
Actuellement, j'arrive à souligné, changer la police, la taille mais pas à mettre en gras ou italic. Le Fait d'ajouter "-Bold" au nom de la police fait planter l'application. J'ai vu NSBoldMaskFont mais je sais pas à quoi ça correspond !!!
La deuxième questions est : comment faire pour avoir la même chose que le sélecteur de vue de la fenêtre des propriétés de IB (cf pj) ?
C'est la ToolBarre ou un NSSegmentedButton ?
Ci-joint une appli (non encore terminée, je suis sur autre chose) qui te donne une liste exhaustive des attributs graphiques
Mais cela viendra ..
Là je ne comprends pas la question
Chaps a posé une question sur ce sujet il y a 2-3 semaines, le débat avait été très précis.