2016-10-01 54 views
0

我想,這大概是在kivy更深層次的東西簡單的小姐認識,但我有一個是產生兩個圖像的RoundedImage類,其中一個是不帶圓角和一個用圓原有一點關閉屏幕。這是怎麼回事?Kivy圖像子類生成兩個圖像

截圖: http://imgur.com/gallery/IRYfr

我認爲這可能是是與子類圖片?

class RoundedImage(Image,StyleUnit): 

    _styleist = RadialGradientStyleist  
    _radius = [20] 
    _source = '' 
    _style = None 
    def __init__(self,**kwargs): 

     super(RoundedImage,self).__init__(**kwargs) 
     #self._source = source 
     #self.initalizeStyle() 

     with self.canvas: 
      StencilPush() 
      self.m_rect = RoundedRectangle(size = self.norm_image_size , \ 
              pos=self.center, \ 
              radius=self._radius) 
      StencilUse() 
      self.rect = Rectangle( size = self.norm_image_size , \ 
            pos = self.center, \ 
            texture = self.texture) 
      StencilUnUse() 
      StencilPop() 
      #Color(1,1,1) 
      #self.line = Line( rounded_rectangle=self.pos+self.size+self._radius, 
      #  width=10) 


     self.bind(pos = self.update_rect, 
        size = self.update_rect) 

    def update_rect(self,*args): 
     self.m_rect.pos = self.center 
     self.m_rect.size = self.norm_image_size 
     self.rect.pos = self.center 
     self.rect.size = self.norm_image_size 

應用程序代碼很簡單:

class ProfilesApp(App): 

    def build(self): 
     profile = RoundedImage(source = source,#self.imageLocation,\ 
            allow_stretch=True) 
     return profile 

profileApp = ProfilesApp() 
profileApp.run() 
+0

你想怎麼辦? – jligeza

回答

1

好了,所以這結束了在模板說明不刪除口罩的問題。

我結束了添加此向.kv定義爲RoundedRectangle

''' 
<-RoundedImage>: 
canvas: 
Color: 
rgb: self.color 
StencilPush 
RoundedRectangle: 
size: self.norm_image_size 
pos: self.center[0] - self.norm_image_size[0]/2.0,self.center[1] - self.norm_image_size[1]/2.0 
radius: self._radius 
StencilUse 
Rectangle: 
texture: self.texture 
size: self.norm_image_size 
pos: self.center[0] - self.norm_image_size[0]/2.0,self.center[1] - self.norm_image_size[1]/2.0 
StencilUnUse 
RoundedRectangle: 
size: self.norm_image_size 
pos: self.center[0] - self.norm_image_size[0]/2.0,self.center[1] - self.norm_image_size[1]/2.0 
radius: self._radius 
StencilPop 

''' 
1

沒有進口,沒有其他的必修課,雖然我已經看到了圓角矩形的地方,我沒有一個線索,那有什麼自定義類做這樣做,所以沒有可運行的代碼。無論如何,讓我們一起努力吧。

是的,這是因爲這個子類 - 圖片已經放置在畫布中,並且您使用它的紋理,它在Rectangle(texture=<here>)中。取而代之的是去除子類的圖像使用source關鍵字參數爲Rectangle這樣的:

Rectangle(source=<path to image>)

話又說回來,雖然你在你的類,它從Image繼承使用source,你需要改變這一點,從kwargs取source

self.source = kwargs.get('source')

然後代替Rectangle(texture=self.texture)Rectangle(source=self.source)