6
votes

Comment changer Nsrect en CGRRECT?

-(void)drawRect : (NSRect)rect 
{    
        imgRect.orgin = NSZeroPoint;

        imgRect.size = [appleImage size];

        drawRect = [self bounds];

        [appleRect drawInRect:appleRect     
                     fromRect:imgRect     
                     operation:NSCompositeSourceOver     
                     fraction:1.0];
        ...     
}
I'm trying this but it's not easy and driving me crazy.How to change NSRect type code to CGRect type code ?plz help! ps. i already know.. NSRect -> CGRect , NSZeroPoint -> CGRectZero

4 commentaires

en double possible de Y a-t-il une différence entre un CGRRECT et un Nsrect?


Le blog post a trouvé ici Dribin.org/Dave/Blog/ Archives / 2007/03/15 / rect_conversion semble bien couvrir ce sujet assez bien.


Il n'y a rien dans votre question qui nécessite une conversion à CGRRECT. - [NSImage Drawinrect: FromRect: opération: fraction:] prend un NSrect, que vous semblez déjà avoir.


Découvrez cette réponse plus mise à jour ... Stackoverflow.com/a/25091800/4844059


4 Réponses :


20
votes

Il suffit d'utiliser ces 2 fonctions de cacao (no IOS): xxx

aperçu ici d'approfondir le sujet: http://cocoadev.com/cgrette


1 commentaires

@Nicolasmiari ..hello de '5 ans plus tard' - et le lien travaille toujours: D (si je suis d'accord en général!)



5
votes

Si vous rencontrez ceci dans iOS, par exemple avec ukeyyboardframeenduserinfokey , il est important de savoir que nsrect est une sous-classe de nsvalue . xxx


0 commentaires

2
votes

En supposant que vous utilisiez la fondation d'Apple et non gnustep ou autre chose d'autre ...


objectif-c h3>

nsrect code> est juste un typedef code> de CGRREC code> ( nsgeometry.h code> ligne 26-ish), de sorte que vous pouvez simplement utiliser soit dans Place de l'autre n'importe où. P>

let nsTest1 = NSRect(x: 1, y: 2, width: 3, height: 4)
let cgTest1 = CGRect(x: 1, y: 2, width: 3, height: 4)
let cgTest2 = CGRect(x: 100, y: 200, width: 300, height: 400)

print(nsTest1 == cgTest1) // true


func takeCgRect(_ rect: CGRect) {
    print("A core graphics rectangle at \(rect.origin) with size \(rect.size)")
}


func takeNsRect(_ rect: NSRect) {
    print("A NeXTStep rectangle at \(rect.origin) with size \(rect.size)")
}


takeCgRect(nsTest1) // A core graphics rectangle at (1.0, 2.0) with size (3.0, 4.0)
takeNsRect(cgTest2) // A NeXTStep rectangle at (100.0, 200.0) with size (300.0, 400.0)


2 commentaires

développeur.apple.com/documentation/foundation/1391329-nsmaker ect < Code> nsmakerect au lieu de nsrectmake


Lol je viens de copier les CG et a changé CG en NS. C'est ce que je reçois la cohérence des Apress Apis 😝 merci, @Vaughan!



0
votes

Swift 5

Cela fonctionne pour moi. Utilisez 'si' avant de laisser. xxx


0 commentaires