• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[WPF]ProgressBar dạng kim đồng hồ

Các đoạn code nhỏ và những mã nguồn linh tinh

Điều hành viên: tungcan5diop, QUANITGROBEST

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

[WPF]ProgressBar dạng kim đồng hồ

Gửi bàigửi bởi neverland87 » T.Sáu 14/08/2009 5:04 pm

Tên chương trình: ProgressBar dạng kim đồng hồ
Ngôn ngữ lập trình: XAML
Tác giả: Sưu tầm từ MSDN
Chức năng: Mã nguồn XAML tạo 1 ProgressBar dạng kim đồng hồ


ScreenShot:

kq.png
kq.png (12.99 KiB) Đã xem 1877 lần


Mã XAML:

Mã: Chọn hết

  1. <Window x:Class="WpfApplication1.Window1"
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.     Title="ScrollBar ProgressBar" Height="300" Width="400">
  5.     <Window.Resources>
  6.         <ControlTemplate x:Key="templateSpeedometer" TargetType="ProgressBar">
  7.             <ControlTemplate.Resources>
  8.                 <Style TargetType="Line">
  9.                     <Setter Property="Stroke" Value="Black"></Setter>
  10.                     <Setter Property="StrokeThickness" Value="1"></Setter>
  11.                     <Setter Property="X1" Value="-85"></Setter>
  12.                     <Setter Property="X2" Value="-95"></Setter>
  13.                 </Style>
  14.                 <Style TargetType="TextBlock">
  15.                     <Setter Property="FontSize" Value="11" />
  16.                     <Setter Property="Foreground" Value="Black" />
  17.                 </Style>
  18.             </ControlTemplate.Resources>
  19.             <Border Width="270" Height="120"
  20.                     BorderBrush="{TemplateBinding BorderBrush}"
  21.                     BorderThickness="{TemplateBinding BorderThickness}"
  22.                     Background="{TemplateBinding Background}">
  23.  
  24.                 <Canvas Width="0" Height="0"
  25.                         RenderTransform="1 0 0 1 0 50" >
  26.  
  27.                     <Rectangle Name="PART_Track" Width="180" />
  28.                     <Rectangle Name="PART_Indicator" />
  29.  
  30.                     <Line LayoutTransform=" 1.00 0.00 -0.00 1.00 0 0" />
  31.                     <Line LayoutTransform=" 0.95 0.31 -0.31 0.95 0 0" />
  32.                     <Line LayoutTransform=" 0.81 0.59 -0.59 0.81 0 0" />
  33.                     <Line LayoutTransform=" 0.59 0.81 -0.81 0.59 0 0" />
  34.                     <Line LayoutTransform=" 0.31 0.95 -0.95 0.31 0 0" />
  35.                     <Line LayoutTransform=" 0.00 1.00 -1.00 0.00 0 0" />
  36.                     <Line LayoutTransform="-0.31 0.95  0.95 0.31 0 0" />
  37.                     <Line LayoutTransform="-0.59 0.81  0.81 0.59 0 0" />
  38.                     <Line LayoutTransform="-0.81 0.59  0.59 0.81 0 0" />
  39.                     <Line LayoutTransform="-0.95 0.31  0.31 0.95 0 0" />
  40.                     <Line LayoutTransform="-1.00 0.00  0.00 1.00 0 0" />
  41.  
  42.                     <TextBlock Text="0%" Canvas.Left="-115" Canvas.Top="-6" />
  43.                     <TextBlock Text="20%" Canvas.Left="-104" Canvas.Top="-65" />
  44.                     <TextBlock Text="40%" Canvas.Left="-42" Canvas.Top="-105" />
  45.                     <TextBlock Text="60%" Canvas.Left="25" Canvas.Top="-105" />
  46.                     <TextBlock Text="80%" Canvas.Left="82" Canvas.Top="-65" />
  47.                     <TextBlock Text="100%" Canvas.Left="100" Canvas.Top="-6" />
  48.  
  49.                     <Polygon Points="5 5 5 -5 -75 0"
  50.                              Stroke="Black" Fill="Red">
  51.                         <Polygon.RenderTransform>
  52.                             <RotateTransform
  53.                                 Angle="{Binding ElementName=PART_Indicator,
  54.                                                Path=ActualWidth}" />
  55.                         </Polygon.RenderTransform>
  56.                     </Polygon>
  57.                 </Canvas>
  58.             </Border>
  59.         </ControlTemplate>
  60.     </Window.Resources>
  61.     <StackPanel>
  62.         <ProgressBar Minimum="0" Maximum="100" Margin="50" Template="{StaticResource templateSpeedometer}" Value="{Binding ElementName=scroll, Path=Value}"></ProgressBar>
  63.         <ScrollBar Name="scroll" Orientation="Horizontal" Minimum="0" Maximum="100" SmallChange="1" LargeChange="10" Margin="50 0 50 0"></ScrollBar>
  64.     </StackPanel>
  65. </Window>


Download mã nguồn tại đây:
ProgressBarKimDongHo.rar
(49.62 KiB) Đã tải 726 lần


SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

Quay về “[.NET] Mã nguồn linh tinh”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách