
рдпрд╣ рдЧрд╛рдЗрдб WPF рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рддреЗрдЬ рддрд╕реНрд╡реАрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдбреНрдбрд┐рдпреЛрдВ рдХреЗ рдордЬреНрдЬрд╛ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рдгрд╛рд▓реА WPF рд╡реЗрдХреНрдЯрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЕрднреА рднреА рдПрдХ рд░реЗрдЦрд╛рдкреБрдВрдЬ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рддрдереНрдп рдкрд░ рдЙрдЪрд┐рдд рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "рд╕рд╛рдмреБрди" рдХреА рд╡рд┐рднрд┐рдиреНрди рдХрд┐рд╕реНрдореЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд░реЗрдЦрд╛рдВрдХрди рдХреА рдкрд░рдЬреАрд╡реА рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдорди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдирд╣реАрдВ рдЦреЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрдирдХреА рдШрдЯрдирд╛ рдХреЗ рдХрд╛рд░рдг рдХрд╛рдлреА рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИрдВ, рдФрд░ рд╕рдВрдШрд░реНрд╖ рдХреЗ рддрд░реАрдХреЗ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╣реИрдВред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
рдкрд░рд┐рдЪрдп1. рд░реЗрдЦрд╛рдкреБрдВрдЬ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЫрд╡рд┐рдпреЛрдВ2. рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ3. рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдореВрд▓ рд╕рдВрдХрд▓реНрдк4. рд╡реЗрдХреНрдЯрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд░реЗрдЦрд╛рдВрдХрди5. рдкрд╛рда рдХреЛ рд▓рдВрдмрд╡рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ6. SnapsToDevicePixels рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛7. рд╕реНрд╡-рдбреНрд░рд╛рдЗрдВрдЧ рдирд┐рдпрдВрддреНрд░рдгрдирд┐рд╖реНрдХрд░реНрд╖рд╕рдВрджрд░реНрднрдкрд░рд┐рдЪрдп
рд░реЗрдЦрд╛рдВрдХрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рджреГрдврд╝рддрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рд╡реЗ рд╣рдбрд╝рддрд╛рд▓реА рдирд╣реАрдВ рд╣реИрдВред рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд╕ рдПрдХ рдпрд╛ рджреЛ рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рджреЛрд╖ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВред
рд╕рд╛рд╡рдзрд╛рдиреА рдХреА рдПрдХ рдЫреЛрдЯреА рдкрд░реАрдХреНрд╖рд╛:
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЙрди рдХрд╛рд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░реА рддрд╕реНрд╡реАрд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЦрддреНрдо рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд╛рда рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдб рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реЗ рдЫреЛрдЯреЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдзрд╛рд░рдХ рдпрд╛ рдХрдо рджреГрд╖реНрдЯрд┐ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредрдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЖрдк рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдЧреНрд░рд╛рдлрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрдЧреА, рддреЛ рдЖрдк рдЗрд╕ рдЧрд╛рдЗрдб рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред
рдореИрдиреБрдЕрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЛ рдПрдХ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд▓реИрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╢реНрди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рдЖрдк рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдирдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб (VS2010 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рд░реВрдк) рд╡рд╛рд▓реЗ
рдПрдХрд▓ рд╕рдВрдЧреНрд░рд╣ (104 Kb) рдореЗрдВ рд╕рдм рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, WPF рдХрд╣рд╛рдБ рд╕реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ?
1. рд░реЗрдЦрд╛рдкреБрдВрдЬ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЫрд╡рд┐рдпреЛрдВ
рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдзреБрдВрдзрд▓рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рдХрд╛рд░рдг рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рджреМрд░рд╛рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╣реИред
рдЫрд╡рд┐ рддрддреНрд╡ рдЖрдХрд╛рд░ рджреЗрдВ рдЬреЛ
рдЫрд╡рд┐ рдХреЗ рднреМрддрд┐рдХ рдЖрдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЕрдм рд╕реНрд░реЛрдд рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░ рдЖрдХрд╛рд░ рдореЗрдВ рдЫрд╡рд┐ рдЖрдХрд╛рд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдХрд╛рд░рдг рдЫрд╡рд┐ рдХреЛ рдПрдХ рд░реИрд╕реНрдЯрд░ рдЧреНрд░рд┐рдб рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд┐рдкрдХреНрд╖
рдпрджрд┐ рдЫрд╡рд┐ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЫрд╡рд┐ рдЖрдпрд╛рдо рдЧрд▓рдд рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдЖрдк рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдмрдврд╝реЗ рд╣реБрдП рдлреЛрдВрдЯ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ WPF рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдорд╛рдк рдХреА рдЖрднрд╛рд╕реА рдЗрдХрд╛рдИ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рд╕реЗ рдмрдбрд╝реА рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рдЖрдкрдХреА рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐ рдЦреАрдВрдЪрдХрд░ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рджреВрд╖рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреАред
рдпрджрд┐ рдЖрдкрдХреА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрдбрд╝реЗ рдлреЛрдВрдЯ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдлреНрд▓рд╛рдИ рдкрд░ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдФрд░ рдЙрд╕рдХреЗ рдорд╛рдирдХ рдХреЗ рд╕рдВрдмрдВрдз рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
public static class Render { static Render() { var flags = BindingFlags.NonPublic | BindingFlags.Static; var dpiProperty = typeof(SystemParameters).GetProperty("Dpi", flags); Dpi = (int)dpiProperty.GetValue(null, null); PixelSize = 96.0 / Dpi; }
рдЕрдЧрд▓рд╛, рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░
, рдорд╛рдирдХ
рдЫрд╡рд┐ рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдореЗрдВ рдЪрд┐рддреНрд░ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред XAML рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рддрд╕реНрд╡реАрд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
public class StaticImage : Image { static StaticImage() {
рдпрджрд┐ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣
рд░реЗрдВрдбрд░рдСрдлрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЖрдЙрдЯрдкреБрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╡рд┐рдХреГрддрд┐ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рдирд╛ рд╣реИред
рдмрд┐рдЯрдореИрдкрд╕рдХреНрд▓рд┐рдВрдЧрдореЛрдб рд╕рдВрдкрддреНрддрд┐ред
2. рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ
рдЕрдирд┐рдпреЛрдЬрд┐рдд рдмреНрд▓рд░ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рддрд░реАрдХрд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ
рдЫрд╡рд┐ рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ (рдпрд╣
рдЖрдпрдд рдФрд░ рдЕрдиреНрдп
рдЖрдХреГрддрд┐ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдЖрдзреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдзреЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдмрд┐рдирд╛ рдХреЗрдВрджреНрд░ рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЧреНрд░рд┐рдб рдХрдВрдЯреЗрдирд░ рдЖрдкрдХреЛ рдордирдорд╛рдиреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рдКрдкрд░реА рдмрд╛рдПрдВ рд╕реЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдХреЛрд╣рд░рд╛ рджрд╛рдПрдВ рдирд┐рдЪрд▓реЗ рд╕реЗрд▓ рдореЗрдВ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдЪреАрдЬреЛрдВ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣реИ:
<Grid Width="117" Height="117"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.Resources> <Style TargetType="Image"> <Setter Property="Width" Value="48"/> <Setter Property="Height" Value="48"/> <Setter Property="Margin" Value="5"/> <Setter Property="VerticalAlignment" Value="Top"/> <Setter Property="HorizontalAlignment" Value="Left"/> <Setter Property="Source" Value="CookingPot.png"/> </Style> </Grid.Resources> <Image Grid.Column="0" Grid.Row="0"/> <Image Grid.Column="1" Grid.Row="0"/> <Image Grid.Column="0" Grid.Row="1"/> <Image Grid.Column="1" Grid.Row="1"/> </Grid>
рдХреЛрдИ рднреА рдХрдо рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ
рдХреИрдирд╡рд╕ рдЗрдВрдбреЗрдВрдЯ рдпрд╛ рдкреЛрдЬрд┐рд╢рди рдореЗрдВ рдХрд╛рд░реНрдп рдХреА рддрд╕реНрд╡реАрд░ рдХреЛ рдзрдмреНрдмрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред
рдЗрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ "рд╕рд╛рдмреБрди" рдорд┐рд▓реЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рди рд╣реЛред рдЫрд╡рд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдПрдВ рд╕реНрдХреНрд░реАрди рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЧрд┐рд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреА рд╣реИрдВ, рдФрд░ рд░реЗрдЦрд╛рдкреБрдВрдЬ рд╣реЛрдиреЗ рдкрд░ рдЙрдирдХреА рд╕реНрдореАрдпрд░рд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИред
рд╡рд┐рдкрдХреНрд╖
рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ,
UseLayoutRounding рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ
рдЯреНрд░реВ рдлреЛрд░реНрд╕ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ (
рд╡рд┐рдВрдбреЛ рд╕рд╣рд┐рдд) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдХрдЯрддрдо рдкреВрд░реНрдгрд╛рдВрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди рдкрд░ рдЧреЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИ ред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдмрд╛рдВрдзрдирд╛ рд╣реЛрдЧрд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "рдкреВрд░реНрдгрд╛рдВрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ" рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╕рднреА рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╡рд┐рднрд╛рдЬреНрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ" рдХреЗрд╡рд▓ 96 рдбреАрдкреАрдЖрдИ рдХреЗ рдорд╛рдирдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ, рдЕрдиреНрдп рд╕рднреА
Math.Round рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рдХрдЯрддрдо рдкрд┐рдХреНрд╕реЗрд▓ рдмреЙрд░реНрдбрд░ рдкрд░ рд╕рдордиреНрд╡рдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
static public double SnapToPixels(double value) { value += PixelSize / 2;
3. рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдореВрд▓ рд╕рдВрдХрд▓реНрдк
рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ Google рд╕реЗ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐
рдЫрд╡рд┐ рдореЗрдВ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛
рдПрдХ рдЬрд╛рджреВ рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╡рд┐рдзрд╛ рд╣реИ, рдпрд╣
рд╕реНрдЯреНрд░реЗрдЪ = "рдХреЛрдИ рдирд╣реАрдВ" рд╣реИ , рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЦреБрдж рдХреЛ рдЬреЛрдЦрд┐рдо рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВред рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЫрд╡рд┐ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп WPF рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рддреЛ, рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдлрд▓ рд╕реЗрдЯ рдХреЗ рддрд╣рдд, рдЖрдк рдХрд╛рд▓реЗ рдЬрд╛рджреВ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЦреАрдВрдЪреА рдЧрдИ рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдВ, рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрд░реВрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рдлреБрд▓реНрд▓рд┐рдд рдпрд╛ рд╕рд┐рдХреБрдбрд╝ рдЬрд╛рдПрдЧреАред
рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрди рддреАрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╣реИ):



рдпрджрд┐ рддрд╕реНрд╡реАрд░ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рдЗрд╕рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм "рдореВрд▓" рдЖрдХрд╛рд░ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдЪрд╛рдирдХ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛
StaticImage рд╡рд░реНрдЧ рднреА рдЗрди рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
Source.Width рдФрд░
Source.Height рдЧреБрдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдХреЛрдИ рднреА рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрдкрд╛рджрдХ рдпрд╛ рдЪреМрдХреАрджрд╛рд░ рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдЫрд╡рд┐ рд╕рдВрдХрд▓реНрдк рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕реНрд╡рд┐рдВрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Image Grid.Column="0" Source="Man1.png" Stretch="None" Margin="5"/> <Image Grid.Column="1" Source="Man2.png" Stretch="None" Margin="5"/> <Image Grid.Column="2" Source="Man3.png" Stretch="None" Margin="5"/> </Grid>
рд╡рд┐рдкрдХреНрд╖
рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд╕реА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдЫрд╡рд┐ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдПрдбрд┐рдЯрд░ рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ 96 рдбреАрдкреАрдЖрдИ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрдХрд▓реНрдк рдмрджрд▓рдиреЗ рдкрд░ рд╕реНрд╡рдпрдВ рдЫрд╡рд┐ рдХреЛ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреЗрд╡рд▓ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдорд╛рдирдХ рдкреЗрдВрдЯ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЛрдХрдкреНрд░рд┐рдп
рдЗрд░рдлрд╛рдирд╡реНрдпреВ рдлреНрд░реАрд╡реЗрдпрд░ рдореЗрдВ, рдЖрдк рдЫрд╡рд┐ рдЧреБрдг рдкреНрд░рджрд░реНрд╢рди рд╕рдВрд╡рд╛рдж (рд╣реЙрдЯрдХреА I) рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдореБрдХреНрдд
рдкреЗрдВрдЯ.рдиреЗрдЯ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, "рдЫрд╡рд┐" рдореЗрдиреВ рдкрд░ рдЬрд╛рдХрд░ рдЙрд╕реА рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ "рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ ..." (рд╣реЙрдЯрдХреА Ctrl + рд╢рд┐рдЯ + рдЖрд░)ред

рдпрджрд┐ рдЖрдк рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдПрдбрд┐рдЯрд░ рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд╕реНрдЯрдо рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ), рддреЛ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред 32-рдмрд┐рдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
4. рд╡реЗрдХреНрдЯрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд░реЗрдЦрд╛рдВрдХрди
"рд╕рд╛рдмреБрди" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдкрд╣рд▓реЗ рддреАрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд╡рд░реНрдгрди рд╕реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд░рд╛рдп рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ WPF рдореЗрдВ c рдмрд┐рдЯрдореИрдкреНрд╕ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рд╡реЗрдХреНрдЯрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, SVG рд╕реЗ XAML рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдПрдХ рд░рд╛рдордмрд╛рдг рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЖрдХрд╛рд░ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд╢, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдЖрдзреА рд░рд╛рдд рдХреЛ, рдЧрд╛рдбрд╝реА рдХрджреНрджреВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╡реЗрдХреНрдЯрд░ рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЬрд┐рддрдиреЗ рдХрдо рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБред 48 рдкрд┐рдХреНрд╕рд▓ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рдХреЗ рдЖрдХрд╛рд░ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдкрд░ (рдпрд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рднреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рд▓рдЧрднрдЧ 80% рд╣реИ), рд╕реНрдерд┐рддрд┐ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ: рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЫрд╡рд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ rasterized рд╣реИ, рдЬреЛ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ insofarред рд╡реЗрдХреНрдЯрд░ рдЖрдЗрдХрди рдХреЛ рдЧрд▓рдд рдЖрдХрд╛рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдиреБрднрд╡рд╣реАрди рдПрдВрдЯреА-рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдЖрдкрдХреЛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рд╛рдПрдЧреАред


рд╡рд┐рдкрдХреНрд╖
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреВрд▓рдмрд╛рд░ рдХреЗ рдмрдЯрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдореЗрдВ рдЪрд┐рддреНрд░ 32x32 рдкрд┐рдХреНрд╕реЗрд▓ рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ 25x25 рдореЗрдВ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдЖрдЗрдХрди рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЫрд╡рд┐ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд░рдг рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдХреА рдкрд┐рдХреНрд╕реЗрд▓ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
5. рдкрд╛рда рдХреЛ рд▓рдВрдмрд╡рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп, WPF рдХреБрдЫ рдкреИрдирд╛рдкрди рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдкрд╛рда рд╕реНрдерд┐рд░ рд╣реИ, рдпрд╣ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЪрдпрдирд┐рдд рд░реЗрдЦрд╛рдВрдХрди рдореЛрдб (.NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдФрд░ рдЙрдЪреНрдЪрддрд░) рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИред рдЬрдм рдХреБрдЫ рдХрддрд░рдиреА рдореВрд▓реНрдпреЛрдВ рдкрд░ рд▓рдВрдмрд╡рдд рдЪрд▓рддреА рд╣реИ, "рд╢рд╛рд░реНрдкрд┐рд▓реНрдХрд╛" рддреЗрдЬреА рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рдкрд░ рдПрдХ рдзрдмреНрдмреЗрджрд╛рд░ рдзрдмреНрдмрд╛ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
<Button VerticalAlignment="Top"> <Button.Template> <ControlTemplate TargetType="Button"> <Border Width="255" Height="40" BorderThickness="1 0 1 1" CornerRadius="0 0 10 10" BorderBrush="#FF202020" Background="#FFF7941D"> <StackPanel Name="Panel" Orientation="Horizontal"> <Label Content=" " Foreground="#FF202020" VerticalAlignment="Center" Margin="20 0 0 0" Padding="0"/> </StackPanel> </Border> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="True"> <Setter TargetName="Panel" Property="Margin" Value="3 1 -3 -1"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button>

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдзреБрдВрдзрд▓рд╛ рд╕реНрдерд┐рддрд┐ рдмрд▓реНрдХрд┐ рд░рд╣рд╕реНрдпрдордп рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рд╢реАрд░реНрд╖ рд╕реАрдорд╛ рдХреА рдХрдореА рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди, рд╕реНрдЯреИрдХрдкреИрдирд▓ рдореЗрдВ рдкрд╛рда рдХрд╛ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдирд╛ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрдЯрди рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рднреА рдереА) рдФрд░ рдкрд╛рда рдХреА рдПрдХ рддреЗрдЬ рд╢рд┐рдлреНрдЯ рдореЗрдВ рдПрдХ рдпрд╛ рджреЛ рдкрд┐рдХреНрд╕рд▓ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
рд╡рд┐рдкрдХреНрд╖
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ,
TextOptions рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
, рдЖрдк рджреЛ рдкрд╛рда
рд░реЗрдЦрд╛рдВрдХрди рдореЛрдб рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ:
рдЖрджрд░реНрд╢ рдФрд░
рдкреНрд░рджрд░реНрд╢рди ред рдпрд╣ рдЕрдкреНрд░рд┐рдп рдзреБрдВрдзрд▓рд╛ рдкреНрд░рднрд╛рд╡ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░реЗрдЧрд╛ред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рд░реЗрдЦрд╛рдВрдХрди рдореЛрдб
рдЖрдЗрдбрд┐рдпрд▓ рдореЛрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ - рджреЛрдиреЛрдВ рдЕрдХреНрд╖рд░ рдкрд┐рдХреНрд╕реЗрд▓ рдЧреНрд░рд┐рдб рдкрд░ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рд░реИрд╕реНрдЯрд░рд╛рдЗрдЬрд╝ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рдореЗрдВ, рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреНрд╖реИрддрд┐рдЬ рдкрд╛рда рд╣рдореЗрд╢рд╛ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдорд╛рди рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЪрд╛рдирдХ рдкрд╛рда рдЖрдВрджреЛрд▓рди рдХрд╛ рдзреБрдВрдзрд▓рд╛ рдкреНрд░рднрд╛рд╡ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдПрдХрд╛рдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рдХреЗ рддреАрди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЖрдВрджреЛрд▓рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдПрдХ рд╣реА рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ рджреЛ рдмреНрд▓реЙрдХ рдЕрд▓рдЧ рд╕реЗ рдзреБрдВрдзрд▓рд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдмрджрд▓рд╛рд╡ рдХрд╛ рдорд╣рддреНрд╡ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрд╛рда рдХреА рд╕реНрдерд┐рддрд┐ред

рдкрд╛рда рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдорд╛рддреНрд░ рддрдереНрдп рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдЧрддрд┐рд╢реАрд▓ рдзреБрдВрдзрд▓рд╛" рд╣реЛред рдпрджрд┐ рдпрд╣ рдкреНрд░рднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрдкреВрд░реНрдг рд░реЗрдЦрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрд╛рд╢, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдзрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рд╛рдП рдЬрд╛рддреЗред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдХреА рдШрдЯрдирд╛ рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдХреЗ рдпрд╛ рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЯрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
6. SnapsToDevicePixels рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрджрд┐ рдЖрдк рдРрд╕реЗ рдореВрд▓ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ
рд░реЗрдХреНрдЯреЗрдВрдЧрд▓ ,
рдПрд▓рд┐рдкреНрд╕реЗ ,
рд▓рд╛рдЗрди ,
рдкрд╛рде ,
рдмреЙрд░реНрдбрд░ , рдЖрджрд┐, рддреЛ рдЬрдм рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдХрдИ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛рдУрдВ рдХреЗ рдзреБрдВрдзрд▓рд╛ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдпрд╣рд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд┐рдд рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
<Grid HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.RowDefinitions> <RowDefinition Height="10"/> <RowDefinition Height="20"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="25"/> <ColumnDefinition Width="6"/> </Grid.ColumnDefinitions> <Ellipse Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Fill="Black" Width="10" Height="10" VerticalAlignment="Top" Margin="15 5 0 0"/> <Line Grid.RowSpan="2" X1="10" X2="20" Y1="1" Y2="11" Stroke="Black"/> <Line Grid.ColumnSpan="2" Grid.RowSpan="2" X1="30" X2="20" Y1="1" Y2="11" Stroke="Black" /> <Border Grid.ColumnSpan="2" Grid.Row="1" Background="#FFF7941D"/> <Rectangle Grid.Column="0" Grid.Row="1" Fill="White" RadiusX="3" RadiusY="3" Margin="2.5"/> <Line Grid.Column="1" Grid.Row="1" StrokeThickness="1" Stroke="Black" X1="0" X2="4" Y1="3" Y2="3"/> <Line Grid.Column="1" Grid.Row="1" StrokeThickness="1" Stroke="Black" X1="0" X2="4" Y1="5" Y2="5"/> <Line Grid.Column="1" Grid.Row="1" StrokeThickness="1" Stroke="Black" X1="0" X2="4" Y1="7" Y2="7"/> </Grid>

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ, рдбреЗрдореЛ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг 0.2 рдкрд┐рдХреНрд╕реЗрд▓ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╣ рдкреНрд░рддреНрдпреЗрдХ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рд╕рд░реНрдХрд▓ рдХреЗ рдПрдХ рдЪрд╛рдк рдХреЗ рд╕рд╛рдеред рдЖрдВрджреЛрд▓рди рдХреЗ рдЪрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕реНрдерд╛рдиреАрдп рд╕рдордиреНрд╡рдп рдЧреНрд░рд┐рдб рднреМрддрд┐рдХ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЧреНрд░рд┐рдб рдкрд░ рдЕрд▓рдЧ рд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред






рдХрднреА-рдХрднреА рдЯреАрд╡реА рдХреА рдмрд╛рд╣рд░реА рд╕реАрдорд╛рдПрдБ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддреА рд╣реИрдВ, рдХрднреА-рдХрднреА рдЗрд╕рдХреА рд╕реНрдХреНрд░реАрди рдХреА рд╕реАрдорд╛рдПрдБ рднреА рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА рднреА рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдмрдЯрди рдХреНрд╖реИрддрд┐рдЬ рдпрд╛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЛрдиреЛрдВ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдкрд░ рдзреБрдВрдзрд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдПрдВрдЯреАрдирд╛ рдереЛрдбрд╝рд╛ рдЪрд┐рдХрдирд╛ рд╣реИ рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдкрдХреНрд╖
рдЖрдк
SnapsToDevicePixels рдЧреБрдг рдХреЛ
True (рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд░реВрдЯ рдЧреНрд░рд┐рдб рдкрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ) рд╕реЗрдЯ рдХрд░рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╣реЛрдЧрд╛:






рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрд╕реНрд╡реАрд░ рди рддреЛ рдЪрд▓рддреЗ рд╕рдордп рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ, рдФрд░ рди рд╣реА рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рддрдбрд╝рдХрддреА рд╣реИред рдЯреАрд╡реА рд╕реНрдХреНрд░реАрди рджреЛрдиреЛрдВ рдЕрдХреНрд╖реЛрдВ рдкрд░ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рднреАрддрд░ рд╣рд┐рд▓рддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЯрди рд╣рдореЗрд╢рд╛ рдзреБрдВрдзрд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред
SnapsToDevicePixels рдЧреБрдг рдХреЛ
рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рджреГрд╢реНрдп рддрддреНрд╡ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рд╕реНрдХреНрд░реАрди рдкрд┐рдХреНрд╕рд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЧрд┐рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрддреНрд╕рд╛рд╣ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЫрд╡рд┐ ,
рд▓реЗрдмрд▓ рдФрд░
рдЯреЗрдХреНрд╕реНрдЯрдмреНрд▓реЙрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рд╣реИрдВред рд╕реНрд░реЛрдд рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░
рд▓рд╛рдЗрди рдХреЗрд╡рд▓ рдкрд┐рдХреНрд╕рд▓ рдХреЛ рд╣рд┐рдЯ рдХрд░реЗрдЧреАред
рдЖрдпрдд , рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреИрдВрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдХреВрдж рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдореЗрд╢рд╛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рд╣рд┐рдЯ рдХрд░реЗрдЧрд╛ред
рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдкрд┐рдХреНрд╕реЗрд▓ рддрдбрд╝рдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореВрд▓ рдЫрд╡рд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдмрдЯрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рднреА рд╡рд╛рдИ-рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ 0.5 рдЬреЛрдбрд╝ рджреЗрдВ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рди рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рдП;
- рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрд╡реА рд╕реНрдХреНрд░реАрди рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рдЗрдВрдбреЗрдВрдЯ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдпрд╣ рдирд┐рдХрдЯрддрдо рдкрд┐рдХреНрд╕реЗрд▓ рд╕реАрдорд╛рдУрдВ рд╕реЗ рдмрдВрдзрди рдХреЛ рд╣рд┐рд▓рд╛ рди рд╕рдХреЗред






рд╡реИрд╕реЗ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдХреЗрд╡рд▓ 96 рдбреАрдкреАрдЖрдИ рдХреЗ рдорд╛рдирдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдерд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдЬрдмрдХрд┐ рдмрд╛рдХреА рднреНрд░рдо рдФрд░ рд░реАрд▓рд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред рдХрд┐рд╕реА рднреА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдиреБрднрд╛рдЧ "рд╕реЗрд▓реНрдл-рдбреНрд░рд╛рдЗрдВрдЧ рдХрдВрдЯреНрд░реЛрд▓" рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рднреМрддрд┐рдХ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд▓рддреЗ рд╕рдордп рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред
7. рд╕реНрд╡-рдбреНрд░рд╛рдЗрдВрдЧ рдирд┐рдпрдВрддреНрд░рдг
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╡рд┐рдЬреБрдЕрд▓ рдПрд▓рд┐рдореЗрдВрдЯ рдореЗрдВ
рдСрдирд░реЗрдВрдбрд░ рдХреЛ
рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░
рдбреНрд░реЙрдЗрдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдбреНрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ рд╕реЗ
рд╢реЗрдк рд╡рд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реА
рд░реИрд╕реНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЦреБрдж
SnapsToDevicexixels рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
public class Washer : FrameworkElement { public Washer() { _brush = new SolidColorBrush(Color.FromRgb(247, 148, 29)); _brush.Freeze(); _pen = new Pen(Brushes.Black, 1); _pen.Freeze(); } protected override void OnRender(DrawingContext dc) {
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рднреА рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИрдВ, рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рди рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдЧреНрд░рд┐рдб рдкрд░ рд╕реБрдкрд░рдкреЛрдЬрд╝рд┐рд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:


рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рд╛рдЗрди рд╕реЗ рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдХрд▓рдо рдХреА рдЪреМрдбрд╝рд╛рдИ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдзреЗ рдХрд▓рдо рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реЗрдЦрд╛ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЙрдирдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдлрд┐рдЯ рд╣реЛред рдпрджрд┐ рдЫрд╡рд┐ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЫрд╡рд┐ рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХреЗ рд╕рднреА рдШрдЯрдХ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪрд┐рддреНрд░рдг рдЪрд┐рддреНрд░ рдореЗрдВ 0.2 рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╡реГрджреНрдзрд┐ рдореЗрдВ рдЧрддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред





рд╡рд┐рдкрдХреНрд╖
WPF рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рддрдбрд╝рдХ-рднрдбрд╝рдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -
рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ ред рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ (рдпрд╣
рд╡рд╣реА рд╣реИ рдЬреЛ рдСрдирд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐
рдХрд░рддреА рд╣реИ ), рдЖрдк рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рди рдореЗрдВ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рдордп, рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдлрд┐рдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (
рдХреЗрд╡рд▓ рдСрдирд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐):
protected override void OnRender(DrawingContext dc) { double halfPen = _pen.Thickness / 2;

рдЧрд╛рдЗрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ 96 рдбреАрдкреАрдЖрдИ рдХреЗ рдорд╛рдирдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреЗрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЕрдиреНрдп рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реЗрдЦрд╛ рд╕реАрдорд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреА рд╣реЛрдЧреАред





рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдпрд╣ рд╣реИ рдХрд┐ рдЧрд╛рдЗрдб рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдбреНрд░реЙрдЗрдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреВрд░реЗ рд╡рд░реНрддрдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЙрди рдЖрдХрд╛рд░реЛрдВ рдХреЛ рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рд╡реЗ рдЧрд┐рд░рддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реЗрдЦрд╛рдУрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдЧрд╛рдЗрдбреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реЛрдЧрд╛ред рд╕рдВрдШрд░реНрд╖ рдХреЗ рдХрд╛рд░рдг, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдмрд╛рдХреА рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЧрд╛рдЗрдб рдХреЗ рд╕рд╛рде рдкрд┐рдХреНрд╕реЗрд▓ рдмреЙрд░реНрдбрд░ рдкрд░ рд╕рдВрд░реЗрдЦрдг рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЫрд╡рд┐ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддрд╕реНрд╡реАрд░ рдЪрд▓рддреА рд╣реИ, рддреЛ рд╡реЙрд╢рд┐рдВрдЧ рдорд╢реАрди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдШрд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЙрд╕рдХреЗ рдкреИрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рд╕реНрдерд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рд╕реНрдерд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдиреАрдЪреЗ рд╣рдо рдкрд┐рдХреНрд╕рд▓реНрд╕ рдкрд░ рд╕реНрдиреИрдк рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рдорд╛рдирддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдЦрд╛рдореА рд╕реЗ рд░рд╣рд┐рдд рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рдЙрдВрдЯрд░
рдЬрдм рдбреНрд░рд╛рдЗрдВрдЧ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрд┐рдХреНрд╕ рдХреЛ рд╕реНрдиреИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдЗрдХрд▓ рдЪрд▓рд╛рдирд╛ рдЙрддреНрд╕рд╛рд╣реА рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЖрджрд┐рдорд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗред рдпрд╣ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред96 рдбреАрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП, рдЖрдк Math.Round рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдЧреЛрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛;
- рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрдВрдЦреЛрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдХреА рдПрдХ рдмрд╣реБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП;
- рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдкреЗрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдПрдХ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдкреНрд░рджрд░реНрд╢рд┐рдд рдЖрджрд┐рдо рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЖрдзреА рдЪреМрдбрд╝рд╛рдИ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
- рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд░реИрд╕реНрдЯрд░ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рд╢рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╣реА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рдореВрд╡рдореЗрдВрдЯ рдкрд░ рдСрдирд░реЗрдВрдбрд░ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдирд╛ рд╣реИ ред
рдРрд╕реЗ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд╣рд▓реЗ рджреЛ рдЦрдВрдбреЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рдереЗ):
рдпрджрд┐ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдпрд╛ рд╕реНрдХреНрд░реАрди рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ) рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдордЬрдмреВрддреА рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ Render.PixelSize * n рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ ред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрдИ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдЧреЛрд▓ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ Render.SnapToPixels рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ редрд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рддреАрд╕рд░реА рдФрд░ рдЪреМрдереА рд╕реНрдерд┐рддрд┐рдпреЛрдВ (рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд╕рдмрд╕реНрдкрд┐рдХреНрд▓ рд╢рд┐рдлреНрдЯреНрд╕ рдФрд░ рдкрдВрдЦреЛрдВ рдХреЗ рд╡рд┐рд╖рдо рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: public class SelfDrawingControlBase : FrameworkElement { public SelfDrawingControlBase() { Snap = 0.5 * Render.PixelSize; SubpixelOffset = new Point(0, 0); LayoutUpdated += OnLayoutUpdated; } protected void OnLayoutUpdated(object sender, EventArgs e) { FixSubpixelOffset(); InvalidateVisual(); }
рдЗрд╕ рдХрдХреНрд╖рд╛ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЧреНрд░рд╛рдлрд┐рдХ рдЖрджрд┐рдо рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред SnapXXX рд╡рд┐рдзрд┐рдпрд╛рдБ рдореВрд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреА рд╣реИрдВ рддрд╛рдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЧрд┐рд░ рдЬрд╛рдПредрдЖрдпрддрд╛рдХрд╛рд░ рдФрд░ рджреАрд░реНрдШрд╡реГрддреНрдд рд╡рд┐рд╖рдо рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдкрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдзреЗ рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Y рд╕рдордиреНрд╡рдп рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, X рд╕рдордиреНрд╡рдп рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВред рд╕рдордиреНрд╡рдп рд╕реБрдзрд╛рд░ рдХреЗ рджреМрд░рд╛рди, рдкрд┐рдХреНрд╕реЗрд▓ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдкрд╛рд░реА рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИредрд╡реЙрд╢рд┐рдВрдЧ рдорд╢реАрди рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд┐рдХреНрд╕рд▓ рдореЗрдВ рд╕реНрдиреИрдк рдХрд░реЗрдВ: public class Washer : SelfDrawingControlBase { public Washer() { _brush = new SolidColorBrush(Color.FromRgb(247, 148, 29)); _brush.Freeze(); _pen = new Pen(Brushes.Black, 1); _pen.Freeze(); } protected override void OnRender(DrawingContext dc) {
рдкрд░рд┐рдгрд╛рдо рдЧрд╛рдЗрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рд╕реБрдзрд╛рд░ рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЙрджрд╛рд╣рд░рдг рдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ 96 рдбреАрдкреАрдЖрдИ рдХреЗ рдорд╛рдирдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдкреНрд░рд╛рдЗрдорд░реА рдХреЗ рдХрд▓рдо рдЖрдХрд╛рд░ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдбрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдиреИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рддреЛ рдбреЗрдЯрд╛ рдХреЛ SnapXXX рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ , рдЖрдкрдХреЛ Render.SnapToPixels рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реАрдорд╛рдУрдВ рдкрд░ рдЧреЛрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ редрдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдг рдПрдХ рдЖрдпрдд рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдорд╛рдкрддрд╛ рд╣реИ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдЖрддрд╛ рд╣реИ: public class CrossDpiBrick : SelfDrawingControlBase { public CrossDpiBrick() { _brush = new SolidColorBrush(Color.FromRgb(247, 148, 29)); _brush.Freeze(); _pen = new Pen(Brushes.Black, Render.SnapToPixels(7)); _pen.Freeze(); } protected override void OnRender(DrawingContext dc) { var rect = new Rect(Render.SnapToPixels(10), Render.SnapToPixels(10), Render.SnapToPixels(120), Render.SnapToPixels(40)); SnapRectangle(_pen, ref rect); dc.DrawRoundedRectangle(_brush, _pen, rect, Render.SnapToPixels(10), Render.SnapToPixels(10)); } private Pen _pen; private Brush _brush; }


рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдиреИрдк-рдЗрди WPF рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рд╕реНрдиреИрдк рдХреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рдЖрдЙрдЯрдкреБрдЯ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░ рд╕реНрдерд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдирд┐рд╖реНрдХрд░реНрд╖
WPF рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд┐рдХреНрд╕рд▓реНрд╕ рдкрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ, рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдк рд╕рдмрдкрд┐рдХреНрд╕рд▓ рд╢рд┐рдлреНрдЯреНрд╕ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗрдХреНрдЯрд░ рдФрд░ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд╖реНрдХрд░реНрд╖ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬрдм рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдмрдВрдзрди рдХреЗ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд░реЗрдЦрд╛рдВрдХрди рдХреА рдЙрднрд░рддреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Microsoft рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рддрд╕реНрд╡реАрд░ рдШрдордВрдб рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft Word 2010 рдореЗрдВ рдПрдХреАрдХреГрдд рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЗ рддрддреНрд╡ рд╣реИрдВ:рдкрд░рд┐рдЪрд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ? рдпрджрд┐ рдЕрдм рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕реА рдкрддрд╛ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрдиреНрдореВрд▓рди рдПрдХ рддрдХрдиреАрдХреА рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЧрд╛рдЗрдб рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдВрджрд░реНрдн
MSDN - рдкрд┐рдХреНрд╕реЗрд▓ рд╕реНрдиреИрдкрд┐рдВрдЧ рдЖрд╡реЗрджрди рдПрдХ WPF рдореЗрдВMSDN - рд╕рдВрдкрддреНрддрд┐ UIElement.UseLayoutRoundingрдкреАрдЯ рдмреНрд░рд╛рдЙрди рд╣реИ - рдЕрдкрдиреЗ рдлрд╝реЙрдиреНрдЯреНрд╕ рдореЗрдВ рдкрд╛рда рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рддрд┐рдкрд╛рджрди рдмреБрджреНрдзрд┐рдорд╛рдиреАMSDN рдмреНрд▓реЙрдЧ - рдПрдХ WPF 4.0 рдкрд╛рда рдвреЗрд░ рд╕реБрдзрд╛рд░MSDN - рдХреИрд╕реЗ рдХрд░реЗрдВ: рдПрдХ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ GuidelineSet рд▓рд╛рдЧреВ рдХрд░реЗрдВMSDN - UIElement.SnapsToDevicePixels рд╕рдВрдкрддреНрддрд┐рд╕реНрд░реЛрдд рдбреЗрдореЛ рдХреЛрдб: рдбрд╛рдЙрдирд▓реЛрдб (104 Kb)рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж:
рд░реЛрдореЗрди
рдореЗрд▓рдХреЛрдкреБрдЬрд╝
рд╕реЗрд╡реЗрдВрдбреЛрдЯ