2011-05-28 14 views
5

WPF'de AR Drone Quadcopter için bir arabirim yapıyorum.Gelişmiş bir HUD oluşturma

HUD'ımda kullanabilmem için bazı şeyler yapıyorum. HUD daha gelişmiş kontrollerin

Bir ufka pilota uçağın anki hizalama söyler suni ufuk vardır.

Ben, bu 3 PNG

The background

outliner 1

outliner 3

I (zanaat mevcut zift) taşımak ve (mevcut rulo döner ilk görüntü el).

ben daha da uçağın rulo görselleştirmek olacak belli derecede keneler vardır, bu bir merkez ekseni etrafında döndürmek sadece edecek, İlk üzerinden ikinci görüntüyü koyacağız.

Sonuncusu ikincisinin üzerine koyacağım sonuncusu, bu görüntü sadece görsel bir geliştirici.

O zaman sadece neyin 2.

Son olarak görüntüdeki dairenin içini görmek, böylece ilk görüntüyü maskelemek istemiyor ben şimdiki yükseklik buna bir TextBlock ekleyebilir ve görüntülemek istediğiniz az

sonuç Ben döndürmek ve görüntü taşımak bilmek bu

Result

gibi bir şey olacaktır, ama nasıl birbirinin üstüne görüntüleri yaparım ve nasıl ilk Resmi maskelemek mı?

düzenleme:

Rotate no translate

Ama aynı zamanda görüntü Y pozisyonu (uçağın zift)

With translate

çevirmek gerekir: Teşekkürler Ben'e bu kadar kazanılmış ettik

Tercüme dönüşümü eklediğimde Klip (Maske) 'yi de tercüme ediyorum, maskeyi hareket ettirmeden görüntüyü nasıl çevirebilirim?

+0

kodu paylaşımı sakıncası var mı? :) Teşekkürler! –

+0

Onun temelde benim cevabımda gördüğünüz kod – Anders

cevap

4

İçinde DrawingGroups ve ClipGeometry'u kullanabileceğiniz küçük bir örnek.

<Grid> 
    <Image Source="Images\Background.jpg" /> 

    <Image> 
    <Image.Source> 
     <DrawingImage> 
     <DrawingImage.Drawing> 
      <DrawingGroup> 
      <DrawingGroup> 
       <!-- You can rotate a DrawingGroup --> 
       <DrawingGroup.Transform> 
       <RotateTransform Angle="-15" CenterX="50" CenterY="50" /> 
       </DrawingGroup.Transform> 

       <ImageDrawing ImageSource="Images\last.png" Rect="0,0,100,100" /> 
       <DrawingGroup.ClipGeometry> 
       <EllipseGeometry Center="50,50" RadiusX="25" RadiusY="25" /> 
       </DrawingGroup.ClipGeometry> 
      </DrawingGroup> 

      <DrawingGroup> 
       <ImageDrawing ImageSource="Images\middle.png" Rect="0,0,100,100" /> 
       <ImageDrawing ImageSource="Images\outer.png" Rect="0,0,100,100" /> 
      </DrawingGroup> 
      </DrawingGroup> 
     </DrawingImage.Drawing> 
     </DrawingImage> 
    </Image.Source> 
    </Image> 
</Grid> 
+0

Cool'un altında, yani last.png 0'ı döndürdüğüm ilk görüntüdür. Bütün bu kodla birlikte dönecek gibi mi görünüyor? Bu gece daha sonra denemek zorunda olacak .. teşekkürler! – Anders

+0

Evet, DrawingGroup'da yalnızca bir resim var ('last.png'). Kırpma geometrisi (bu durumda bir daire) ve bu gruptaki bir transatür uygularız. Daha sonra bu iki resmin üstünü bu grubun üstüne koyuyoruz. (İsterseniz iki görüntüyü içeren DrawingGroup'u kaldırabilirsiniz.) Ve RotateTransorm'un Açısı üzerinde bir ciltleme kullanmanız gerektiğini öneririm. – Ben

+0

Evet, şimdi görüyorum. Ben ayrı bir grupta olduğunu özledim .. Zaman bulursanız ve size geri dönersem bu akşamı deneyeceğim .. Tüm yardımlarınız için teşekkürler! – Anders

0

Yorgun dün gece: D döndürmek ve çevirmek için arka plan elde etmek için değil, Klips kırpma grubuna bir alt grubunda arka planı koymak için sadece ... Şimdi çalışıyor!

<Image Width="240" Height="240"> 
     <Image.Source> 
      <DrawingImage> 
       <DrawingImage.Drawing> 
        <DrawingGroup> 
         <DrawingGroup> 
          <DrawingGroup> 
           <DrawingGroup.Transform> 
            <TransformGroup> 
             <RotateTransform Angle="-15" CenterX="120" CenterY="120" /> 
             <TranslateTransform Y="-20" /> 
            </TransformGroup> 
           </DrawingGroup.Transform> 

           <ImageDrawing ImageSource="Images\pNxVK.png" Rect="0,0,240,240" /> 
          </DrawingGroup> 

          <DrawingGroup.ClipGeometry> 
           <EllipseGeometry Center="120,120" RadiusX="60" RadiusY="60"> 
           </EllipseGeometry> 
          </DrawingGroup.ClipGeometry> 
         </DrawingGroup> 

         <DrawingGroup> 
          <ImageDrawing ImageSource="Images\zUr8D.png" Rect="0,0,240,240" /> 
          <ImageDrawing ImageSource="Images\XPZW9.png" Rect="0,0,240,240" /> 
         </DrawingGroup> 
        </DrawingGroup> 
       </DrawingImage.Drawing> 
      </DrawingImage> 
     </Image.Source> 
    </Image> 
İlgili konular