2012-06-24 24 views
7

मैं एक खिड़की प्राप्त करना चाहता हूं जिसमें अर्ध-पारदर्शी धुंधला पृष्ठभूमि हो, जैसा टर्मिनल कर सकता है। इस वीडियो में के बारे में 30 सेकंड देखें, देखने के लिए मैं क्या मतलब है: http://www.youtube.com/watch?v=zo8KPRY6-Mkअर्ध-पारदर्शी धुंधली पृष्ठभूमि के साथ विंडो कैसे प्राप्त करें

यहां एक चित्र देखें: http://osxdaily.com/wp-content/uploads/2011/04/mac-os-x-lion-terminal.jpg

मैं एक घंटे के लिए googling गया है, और काम करने के लिए कुछ भी नहीं मिल सकता है। मुझे विश्वास है कि मुझे किसी भी तरह से कोर एनीमेशन परत बनाने और पृष्ठभूमि फ़िल्टर जोड़ने की ज़रूरत है, लेकिन मैं अब तक असफल रहा हूं ... मैं बस अपनी खिड़की की भूरे रंग की पृष्ठभूमि देखता हूं। यहाँ है कोड मैं अब तक मिल गया है:

कोड:

// Get the content view -- everything but the titlebar. 
NSView *theView = [[self window] contentView]; 
[theView setAlphaValue:0.5]; 

// Create core animation layer, with filter 
CALayer *backgroundLayer = [CALayer layer]; 
[theView setWantsLayer:YES]; 
[theView setLayer:backgroundLayer]; 
CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"]; 
[blurFilter setDefaults]; 
[theView layer].backgroundFilters = [NSArray arrayWithObject:blurFilter]; 
[[theView layer] setBackgroundFilters:[NSArray arrayWithObject:blurFilter]]; 

किसी भी सुझाव या ऐसा करने के लिए उदाहरण मैं क्या करने की कोशिश कर रहा हूँ? धन्यवाद!

+0

अपडेट करूँगा आप एचयूडी विंडो नामक कुछ ढूंढ रहे हैं! Google पर खोज करने का प्रयास करें, यह आपको – doNotCheckMyBlog

+0

धन्यवाद देगा, लेकिन मुझे अभी भी बहुत कुछ नहीं मिल रहा है। कई आशाजनक मंच पोस्ट मिले, लेकिन उदाहरणों या ब्लॉग पोस्टों की ओर इशारा किया जो अब मौजूद नहीं हैं। –

+0

सचमुच, मुझे संदेह है कि धुंधला आसानी से संभव है w/o निजी एपीआई। जैसे http://stackoverflow.com/questions/5901135/blur-background-behind-maattachedwindow – Vervious

उत्तर

3

परतों और फिल्टर की कोई आवश्यकता नहीं, NSWindow यह अपने आप कर सकते हैं

[mywindow setOpaque:NO]; 
[mywindow setBackgroundColor: [NSColor colorWithCalibratedHue:0.0 saturation:0.0 brightness:0.2 alpha:0.5]]; 

कृपया इस का उपयोग नहीं करते, क्योंकि यह आपके शीर्षक पट्टी अल्फा होगा (इसे यहाँ पोस्ट बस में मामला दूसरों की जरूरत है)

[mywindow setOpaque:NO]; 
[mywindow setBackgroundColor: [NSColor blackColor]]; 
[mywindow setAlphaValue:0.5]; 

enter image description here

+0

यह अजीब बात है, पहली विधि मेरे लिए काम नहीं करती है (इसे init में कर रही है)। जागने में भी कोशिश की FromNib, मुझे और यह कहां करना चाहिए (मैं एक nswindow subclass में हूँ) – Wesley

+3

कोई धुंध प्रभाव यहाँ, है ना? – Raffael

+0

नहीं, केवल एक चीज जिसे आप नियंत्रित कर सकते हैं पारदर्शिता (रंगीन) है। –

3
पारदर्शिता उपयोग Jiulong झाओ के सुझाव के लिए

धुंधला पृष्ठभूमि उपयोग इस

एक NSWindow पर कॉल करें:

[self enableBlurForWindow:self]; 

समारोह:

-(void)enableBlurForWindow:(NSWindow *)window 
{ 
    //!!!! Uses private API - copied from http://blog.steventroughtonsmith.com/2008/03/using-core-image-filters-onunder.html 

    CGSConnection thisConnection; 
    uint32_t compositingFilter; 
    int compositingType = 1; // Under the window 

    /* Make a new connection to CoreGraphics */ 
    CGSNewConnection(NULL, &thisConnection); 

    /* Create a CoreImage filter and set it up */ 
    CGSNewCIFilterByName(thisConnection, (CFStringRef)@"CIGaussianBlur", &compositingFilter); 
    NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:2.0] forKey:@"inputRadius"]; 
    CGSSetCIFilterValuesFromDictionary(thisConnection, compositingFilter, (__bridge CFDictionaryRef)options); 

    /* Now apply the filter to the window */ 
    CGSAddWindowFilter(thisConnection, [window windowNumber], compositingFilter, compositingType); 
} 

एनबी: यह उन लोगों के लिए एक निजी एपीआई

+0

हाँ, अच्छा तरीका! और ऐप स्टोर सुरक्षित दिखता है। –

+13

यह निजी एपीआई का उपयोग करते समय ऐप स्टोर सुरक्षित कैसे है? – strange

+0

http://cocoasnippets.io/cocoa/ui/nswindow/coregraphics/2014/02/27/translucent-nswindow-with-blurred-background.html यह लिंक अभी भी – Jesus

0

का उपयोग करता है इसे 2017 में पढ़ना और स्विफ्ट 4 का उपयोग करना

self.backgroundColor = NSColor.black 
self.backgroundColor = NSColor.init(calibratedHue: 0, saturation: 0, brightness: 0, alpha: 0.2) 

पश्चलेख: और आप अपने कस्टम के लिए निम्न NSWindow वर्ग में जोड़ सकते हैं अपने बीजी अल्फा बदलने के लिए इच्छुक मुझे अभी तक धुंध प्रभाव की आवश्यकता नहीं है और जब मैं करता हूं, तो मैं उत्तर