Notification/Delegate, wenn sich Modfier ändern?

  • Notification/Delegate, wenn sich Modfier ändern?

    Ich möchte bestimmte Anzeigen im UI meines Programms ändern, wenn "Option/Alt" gedrückt wird.

    Gibt es da eine Delegate Method, oder eine Notification? Oder muss ich das alles über den KeyDown event eines NSResponders machen?

    Danke

    Alex
    The only thing that really worried me was the ether.
  • RE: Notification/Delegate, wenn sich Modfier ändern?

    Original von below
    Ich möchte bestimmte Anzeigen im UI meines Programms ändern, wenn "Option/Alt" gedrückt wird.

    Gibt es da eine Delegate Method, oder eine Notification? Oder muss ich das alles über den KeyDown event eines NSResponders machen?

    Also mir ist nur die Methode:

    Quellcode

    1. - (void)flagsChanged:(NSEvent *)theEvent
    von NSResponder bekannt. Die verwende ich und damit klappt es sehr gut.
  • RE: Notification/Delegate, wenn sich Modfier ändern?

    hehehehehehhehhehe

    Ein Loch ist im Eimer, lieber Jakob, lieber Jakob,
    Ein Loch ist im Eimer, lieber Jako, ein Loch.

    Hast du auch schon die runde Version gesehen?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Also, ein rechteckiges Loch ist ganz einfach. Du setzt das Window auf nicht opaque und den View auf opaque. Dann bemalst du ihn mit clearColor. So aus der Erinnerung.

    Runde Löcher sind komplizierter.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Dort findest du ein Beispiel: homepage.cs.latrobe.edu.au/wjt…is/Rotated%20Windows.sitx

    (Scheint auch eine eigene Kategorie für die Fenstertransformation zu haben, habe es mir aber nicht so genau angeschaut. Evtl. sind noch weitere Klassen zu importieren)

    Wie hast du denn das mit dem runden Loch hinbekommen? NSBezierPath verweigert gänzlich die Arbeit, wenn es um Transparenz im Fenster geht.
    There are 10 kinds of people in the world - those who understand binary
    and those who don't.
  • Jepp, entweder du bekommst ein weißes Rechteck als Rand oder anderen Kokolores.

    Trick:
    Das ganze erst einmal in eine Bitmap zeichnen und dann mit der richtigen Zeichenmethode ins fenster blitten. IIch kann es mal nachschauen, wenn es dich interessiert.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von SquartWie hast du denn das mit dem runden Loch hinbekommen? NSBezierPath verweigert gänzlich die Arbeit, wenn es um Transparenz im Fenster geht.


    Lag es daran, das es bei mir nicht klappte? OK. Meine Cocoa-Drawing-Kenntnisse sind zur Zeit noch sehr mager. Mit was kann man denn ein Viereck zeichnen, ohne NSBezierPath?
  • Gesucht, gefunden. Meckere aber nicht über das Chaos. War halt eiine Spielerei:

    Quellcode

    1. @implementation HoleView
    2. - (id)initWithFrame:(NSRect)frameRect
    3. {
    4. if ((self = [super initWithFrame:frameRect]) != nil) {
    5. // Add initialization code here
    6. }
    7. return self;
    8. }
    9. - (BOOL)isOpaque {
    10. return NO;
    11. }
    12. - (void)drawRect:(NSRect)rect
    13. {
    14. [[NSColor clearColor] set];
    15. // NSRectFill( [self bounds] ) ;
    16. NSImage* image = [[[NSImage alloc] initWithSize:[self bounds].size] autorelease];
    17. [image lockFocus];
    18. [[NSColor colorWithDeviceRed:1.0 green:0.3 blue:0.3 alpha:1.0] set];
    19. NSRect circleRect = [self bounds];
    20. circleRect.size.width = circleRect.size.height;
    21. circleRect = NSInsetRect( circleRect, 4, 4 );
    22. NSBezierPath* bezierPath = [NSBezierPath bezierPathWithOvalInRect:circleRect];
    23. // [bezierPath appendBezierPathWithGlyph:<#(NSGlyph)glyph#> inFont:<#(NSFont *)font#>
    24. // bezierPath = bezierPath;
    25. [bezierPath fill];
    26. [image unlockFocus];
    27. [image compositeToPoint:NSMakePoint( 0, 0 ) operation:NSCompositeDestinationOut];
    28. // NSRectFill( circleRect );
    29. // [[NSColor redColor] set];
    30. // NSFrameRect( [self bounds] );
    31. }
    32. @end
    Alles anzeigen


    Wie du siehst ist das allles mitten in Experimennten. Spiele mal ruhig mit der Farbe und dem Zeichenmode herum.

    BTW: Wenn du es schaffst, einhallbtransparentes Loch zu zeichnen (Bei Rechtekcen unproblematisch), melde dich doch noch einmal.

    *Huch* Das geht ja auf einmal!?!????!

    Update 2:
    Ah, das Problem war, dass das immer grau war. Weiß der Teufel warum. Ich denke aber mal, dass man das mmit den richtigen Einstelllungen hinbekommt.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Das ist ja cool. Danke für den Code.

    Habe eben auch versucht, eine andere Farbe reinzubekommen aber eine farbige Transparenz reinzubekommen hat bei mir auch nicht geklappt. Vielleicht über Clipping? Aber da bin ich schon überfragt.
    There are 10 kinds of people in the world - those who understand binary
    and those who don't.