2012-10-23 37 views
1

我正在爲我的汽車構建一個診斷讀取器。我可以解析來自我的OBD端口的消息,但是我想創建一個比文本讀取更好的顯示。我想要我的汽車的圖形顯示,突出診斷的受影響的區域。所以如果輪胎壓力低,我希望汽車照片上的輪胎變紅。我想用C#開發它,因爲這是我最熟悉的。有什麼建議可能是最好的方法來做到這一點?如果該方法通過調整窗口大小進行縮放,那也不錯。在C中重新繪製顏色區域#

<Image x:Name ="Bubble" Height="445" HorizontalAlignment="Left" Margin="42,12,0,0" Stretch="Fill" VerticalAlignment="Top" Width="654" Source="/WpfApplication1;component/Images/bubble.png" Panel.ZIndex="0" Opacity="1"/> 
<Image x:Name="Smiley" Height="445" HorizontalAlignment="Left" Margin="42,12,0,0" Stretch="Fill" VerticalAlignment="Top" Width="654" Source="/WpfApplication1;component/Images/bubble.png" Panel.ZIndex="1" Opacity="0"/> 
<Button Content="Button" Height="35" HorizontalAlignment="Left" Margin="10,46,0,0" Name="button1" VerticalAlignment="Top" Width="24" Click="button1_Click" /> 
<Button Content="Button" Height="50" HorizontalAlignment="Left" Margin="14,118,0,0" Name="button2" VerticalAlignment="Top" Width="22" Click="button2_Click" /> 

然後改變不透明度。

Bubble.Opacity = 0.0; 
Smiley.Opacity = 1.0; 

回答

1

這樣做的一種方法是有多個圖像,並消除不透明度。你只需要確保圖像格式支持透明度(png-s很好)。假設您有一輛汽車圖像,併爲前輪和後輪分開疊加。保持所有圖像的大小相同,以便於對齊。

你會得到那麼在代碼

frontwheel.Opacity=1.0; 

編輯像

<Image x:Name="car" Source="car.png" Panel.ZIndex="0"/> 
<Image x:Name="frontwheel" Source="frontwheel.png" Panel.ZIndex="1" Opacity="0"/> 
<Image x:Name="rearwheel" Source="readwheel.png" Panel.ZIndex="2" Opacity="0"/> 

:這裏是從我的一些代碼片段。我添加圖形到畫布中的代碼隱藏

 <Grid Margin="20"> 
      <Image Name="image1" Width="640" Height="640" 
        Opacity="{Binding Path=Value, ElementName=OpSlider}" 
        HorizontalAlignment="Center" 
        /> 
      <Canvas Name="MarkerLayer" 
        Opacity="{Binding Path=Value, ElementName=DotOverlaySlider}" 
        /> 
      <Canvas x:Name="Squares" 
        Opacity="{Binding Path=Value, ElementName=OverlayOpSlider}" 
        /> 
     </Grid> 

不透明這裏勢必將滑塊

  <Slider x:Name="OpSlider" Width="150" SmallChange="0.05" Maximum="1" Value="0.5" /> 
      <Slider x:Name="OverlayOpSlider" Width="150" SmallChange="0.05" Maximum="1" Value="1" /> 
      <Slider x:Name="DotOverlaySlider" Width="150" SmallChange="0.05" Maximum="1" Value="0.8" /> 
+0

甚至更​​好,只留下不透明度爲1的所有元素,並使用過濾器來改變受影響部位的圖像的紅色色調的不透明度。建議使用像@Nzc這樣的單獨圖像是解決問題的最簡單方法。 –

+0

我試過這兩個示例圖像,它似乎並沒有工作。我添加了兩個圖像(PNG),然後我將它們的不透明度設置爲1和0,然後在按鈕中設置不透明度的方式相反。但圖像沒有改變。 –

+0

你可以發佈你的代碼嗎? – Nzc