Q
沿圓形路徑
13
A
回答
15
通過使用非仿射變換(如透視變換)可以獲得交叉徑向效果。我用想法本文由Charles彼佐爾德中:
用交徑向梯度創建XAML的僅環形區域。這裏是標記:
<Canvas x:Name="LayoutRoot">
<Canvas.Resources>
<x:Array x:Key="sampleData" Type="sys:Object">
<x:Array Type="sys:Object">
<sys:Double>0</sys:Double>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Yellow" Offset="0.5"/>
<GradientStop Color="Blue" Offset="1"/>
</LinearGradientBrush>
</x:Array>
<x:Array Type="sys:Object">
<sys:Double>90</sys:Double>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</x:Array>
<x:Array Type="sys:Object">
<sys:Double>180</sys:Double>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Yellow" Offset="0.5"/>
<GradientStop Color="Blue" Offset="1"/>
</LinearGradientBrush>
</x:Array>
<x:Array Type="sys:Object">
<sys:Double>270</sys:Double>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</x:Array>
</x:Array>
</Canvas.Resources>
<ItemsControl ItemsSource="{StaticResource sampleData}">
<ItemsControl.OpacityMask>
<RadialGradientBrush>
<GradientStop Color="Transparent" Offset="0.95"/>
<GradientStop Color="White" Offset="0.949"/>
<GradientStop Color="White" Offset="0.501"/>
<GradientStop Color="Transparent" Offset="0.5"/>
</RadialGradientBrush>
</ItemsControl.OpacityMask>
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ItemsPresenter/>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Canvas Width="1" Height="1">
<Canvas.RenderTransform>
<RotateTransform Angle="{Binding [0]}" CenterX="124" CenterY="124"/>
</Canvas.RenderTransform>
<Viewport3D Width="250" Height="250">
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="0 0 0, 0 1 0, 1 0 0, 1 1 0" TextureCoordinates="0 1, 0 0, 1 1, 1 0" TriangleIndices="0 2 1, 2 3 1"/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="{Binding [1]}"/>
</GeometryModel3D.Material>
<GeometryModel3D.Transform>
<MatrixTransform3D Matrix="0.002,0,0,0,-0.499,-0.498,0,-0.998,0,0,1,0,0.499,0.5,0,1"/>
</GeometryModel3D.Transform>
</GeometryModel3D>
<AmbientLight Color="White" />
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<OrthographicCamera Position="0.5 0.5 1" LookDirection="0 0 -1" UpDirection="0 1 0" Width="1"/>
</Viewport3D.Camera>
</Viewport3D>
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
,這裏是視覺效果:
的影響使用數據源收集與具有兩個屬性,角度和電刷的項目。它爲每個象限使用不同的畫筆繪製四個象限(向上,向右,向下和向左)。然後將整個東西用不透明面具夾在環形區域。
0
1
在GDI + /的WinForms,你可以使用PathGradientBrush做到這一點:
http://www.bobpowell.net/pgb.htm
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.pathgradientbrush.aspx
不幸的是,在WPF一個PathGradientBrush不支持,但有幾個人問在這裏:
(可能是值得件,鑄件g)
由於缺乏支持,您無法直接在XAML中執行此操作,但可以使用GDI +代碼創建映像,然後在XAML中使用映像。與使用非仿射變換相比,這可能會帶來更好的性能。
相關問題
- 1. 沿圓形矩形路徑繪製元素Android
- 2. 沿路徑移動形狀?
- 3. 沿路徑拖動一個圓sgg
- 4. 沿着圓形路徑移動圖像視圖
- 5. 在滾動條上沿圓形路徑移動div
- 6. 使放大鏡沿着一條橢圓形的路徑與CSS
- 7. 沿着圓形路徑旋轉圖標/視圖,滾動 - Android
- 8. 使用HTML/JavaScript/CSS沿圓形路徑移動div
- 9. 沿固定角度的圓形路徑移動div
- 10. 沿Xamarin形式的圓形路徑動畫一個按鈕形式
- 11. 圓形視圖路徑
- 12. Python,圓形最短路徑
- 13. 沿路徑
- 14. 沿D3路徑添加三角形
- 15. SVG:沿曲線路徑追加形狀
- 16. C#路徑中的半圓形矩形
- 17. GDIPlus漸變沿圓形GraphicsPath
- 18. 沿着圓形的Qt動畫橢圓
- 19. 沿路徑漸變
- 20. SVG - 沿着路徑的動畫矩形;矩形中心總是在路徑上
- 21. 通過鼠標移動沿圓形路徑移動一個點(python/pygame)
- 22. 如何使用HTML5 Canvas沿着圓形路徑創建文本軌道?
- 23. 沿着帶有Java圖形的弧形路徑移動形狀
- 24. D3js - 圓形位置與圓弧或曲線路徑的半徑
- 25. 畫出圓形路徑16點與CGContextRef
- 26. 圓形視圖路徑異常
- 27. 在圓形路徑中移動uiview
- 28. 圈在一個圓形路徑
- 29. 圓形路徑上的SVG圖像
- 30. 動畫效果GMSMarker圓形路徑
爲什麼顏色選擇?這與我以前見過的任何音調顏色映射都不一致,無論如何,synesthesics [傾向於認爲這是完全不同的](http://rhythmiclight.com/archives/ideas/colorscales.html)。您也看起來完全不符合[彩色鋼琴項目](http://colorpiano.com/)。 – 2011-01-30 10:54:59
顏色的選擇是任意的,只是出於美學原因而選擇的。與音高沒有相關性。 – Charlie 2011-01-30 20:37:11