2014-06-13 23 views
5

पर पायगम के साथ गलत रंग एंटीअलाइजिंग मैं मैकबुक प्रो (गैर-रेटिना) ओएस एक्स चलाने पर पायगम का उपयोग कर रहा हूं। जब मैं एंटीअलाइज्ड लाइन या सर्कल बनाने की कोशिश करता हूं, तो यह गलत रंग के रूप में बाहर आ रहा है ।ओएस एक्स

import sys, pygame, random, math 
import pygame.gfxdraw 

black = (0,0,0) 
white = (255, 255, 255) 
green = (0, 255, 0) 


pygame.init() 

size = width, height = 800, 600 

screen = pygame.display.set_mode(size) 

# make the background 
background = pygame.Surface(screen.get_size()) 
#background.fill(black) 
background.fill(white) 

while 1: 
    # handle single events 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: sys.exit() 

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_ESCAPE: sys.exit() 

    screen.blit(background, (0, 0)) 

    pygame.draw.line(screen, green, [0, 0], [50,30], 1) 
    pygame.draw.aaline(screen, green, [0, 50],[50, 80], True) 

    pygame.draw.circle(screen, black, [100, 100], 10) 
    pygame.gfxdraw.aacircle(screen, 100, 130, 10, black) 

    pygame.display.flip() 

ओर जाता है कौन सा करने के लिए:

color example

उत्तर

4

pygame स्रोत कोड के माध्यम से खोज के बावजूद इस के लिए कारणों का पता लगाने में सक्षम नहीं किया गया है यहाँ एक उदाहरण है।

हालांकि मैंने एक कामकाज के साथ आने का प्रबंधन किया था। वास्तव में दो।

वहाँ जब नीले के लिए मूल्य 0. आप अपने black को (0,0,1), चक्र पहले से ही होगा बदलते हैं तो है pygame.gfxdraw मॉड्यूल है कि रंग का कारण बनता है ओएस एक्स में में गड़बड़ होने के लिए में एक बग हो रहा है बहुत बेहतर देखो, लेकिन अभी भी थोड़ा नीला रंग है। इसे बदलें (0,0,2) और यह बहुत अधिक काला दिखाई देगा। मुझे थोड़ा समझ में आता है लेकिन यह काम करता है।

संपादित करें: कि पृष्ठभूमि रंग है कि किसी भी नीले रंग शामिल नहीं है के लिए है। ऐसा प्रतीत होता है कि पृष्ठभूमि आरजीबी पर> 0 नीला होता है, सर्कल को बग को रोकने के लिए नीले रंग की मात्रा की आवश्यकता होती है। उदाहरण के लिए, एक (50,50,50) पृष्ठभूमि पर एक काला एसीरकल प्राप्त करने के लिए, निकटतम मैं सर्कल के लिए (0,0,50) का उपयोग करके प्राप्त करने में सक्षम था। नीले रंग की नीची आकृति के परिणामस्वरूप नीले रंग की नीली कलाकृतियों का परिणाम होगा।

ब्लू जोड़ना pygame.draw.aaline के व्यवहार को ठीक करने में मदद नहीं करता है। यह एक अलग बग होना चाहिए। हालांकि, pygame.gfxdraw.line भी एंटी-एलाइज्ड है। इसके बजाय उस विधि का प्रयोग करें, green से (0,255,1) बदलें और साइयन लाइन अब हरा हो जाएगी।

enter image description here

+0

धन्यवाद, यह बेहद सहायक है! – user2171504