
рдмреНрд░реЗрдореЗрди рдЯрд╛рдЙрди рд╕рдВрдЧреАрддрдХрд╛рд░реЛрдВ рдХреЗ рдорджреНрджреЗрдирдЬрд░
рдЬреИрд╕рд╛ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╢рд╛рдпрдж рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рдореЗрдВ (
рд╡рд┐рдВрдбреЛрдЬ 2000 рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ), рдЧреИрд░-рдЖрдпрддрд╛рдХрд╛рд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ (рд╕рд╛рде рд╣реА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдг) рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ
рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рдФрд░ рдорд┐рдиреА-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдлреИрд╢рдиреЗрдмрд▓ рдерд╛ред
рдпреЗ рдкреЛрдВрдЯреЗ рддрдерд╛рдХрдерд┐рдд рд░реВрдк рд╕реЗ
WinAPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
C \
C ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ рдХреНрд╖реЗрддреНрд░реЛрдВред рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рди рдХреЗрд╡рд▓ рдЬрд╛рдо рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рднрд╛рд╖рд╛ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдирд╛ рдерд╛, рдмрд▓реНрдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрднреБрдЬ рдХрд╛ рдЧрд▓рдд рдЙрдЪреНрдЪрд╛рд░рдг рднреА рднрдпрд╛рд╡рд╣ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдпрд╛ рджреЛ рдЧреЛрд▓ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ "рдЦреАрдВрдЪ" рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрд▓рдЧ рд░рдЦрд╛ред
рдФрд░ рдЗрд╕ рд╕реЛрдорд╡рд╛рд░ рд▓реЗрдЦ
"" рдЕрдирд┐рдпрдорд┐рдд "рдлреЙрд░реНрдо рдХрд╛ рд╡рд┐рдВрдбреЛрдЬ" рдлреНрд▓реИрд╢ рд╣реБрдЖ, рдлрд┐рд░ рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдореЗрд░рд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐
.NET рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП
WinAPI рдЖрд╡рд░рдг рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦрдХрд░ рдирд┐рд░рд╛рд╢рд╛ рд╣реБрдИред рдФрд░ рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ
рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛, рдлрд┐рд░
рд╕реВрд░реНрдп рдиреЗ, рдордирдорд╛рдиреЗ рдЖрдХрд╛рд░ рдХреА рдЦрд┐рдбрд╝рдХреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред
рдПрдХ рдХрдк рдХреЙрдлреА
рдЦреИрд░,
рд╕рди /
рдУрд░реЗрдХрд▓ рдиреЗ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рджрд┐рдП?
- рдЬреЗрдПрдирдЖрдИ / рдЬреЗрдПрдирдП :
- рдордВрдЪ рдкрд░ рдирд┐рд░реНрднрд░
- рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓ рдХреЛрдб рд▓рд┐рдЦреЗрдВ
- рдкреГрд╖реНрдарднреВрдорд┐ рдЦреАрдВрдЪрдХрд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛:
- рдЦрд┐рдбрд╝рдХреА рдЕрднреА рднреА рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ
- рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди
- рдЦрд┐рдбрд╝рдХреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рджреЗрд░реА
- рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рддреБрд░рдВрдд рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ (рд╡рд┐рд╢реЗрд╖рдХрд░, рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдПрдиреАрдореЗрд╢рди рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА)
- рдХрдХреНрд╖рд╛ com.sun.awt.AWTUtilities :
- рдХреЗрд╡рд▓ Sun VM рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 1.6_10 рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ
- рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧ рдЬрд┐рд╕рдХрд╛ рд╕рдорд░реНрдерди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ
- рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ java.awt.Window , java.awt.GraphicsEnvironment , java.awt.GraphicsConfiguration :
- рд╕рдВрд╕реНрдХрд░рдг 1.7.0 рд╕реЗ рдЙрдкрд▓рдмреНрдз, рдЪреАрдпрд░реНрд╕!
- рдЬреЛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ: OpenJDK рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдлрд┐рд▓рд╣рд╛рд▓, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдкреНрд░рдЪрд▓рд┐рдд рд╡рд┐рдзрд┐ред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдХрд╛рд░реНрдп рд╣реИ:
рдЬрдЯрд┐рд▓ рдЧреИрд░-рдЖрдпрддрд╛рдХрд╛рд░ рдЖрдХрд╛рд░ рдХреА рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдЦрд┐рдбрд╝рдХреА (рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░), рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде, рдЦрд┐рдбрд╝рдХреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ, рдХреЛрдИ рднреА рдирд┐рдпрдВрддреНрд░рдг рд░рдЦреЗрдВ (рджреЛрдиреЛрдВ рдорд╛рдирдХ рдФрд░ рдордирдорд╛рдирд╛ рдЖрдХрд╛рд░ рднреА)рдХреНрд╖реЗрддреНрд░, рдХреНрд╖реЗрддреНрд░, рдХрд┐рдирд╛рд░рд╛
рд╕реНрдореЛрдХреНрдб, рд╕реНрдореЛрдХреНрдб рдореИрдиреБрдЕрд▓ рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐
java.awt.Shape рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХрд┐рд╕реА рднреА рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдХреГрддрд┐рдпреЛрдВ рдХреА рддрд░рд╣ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рдорд╛рди, рд╣рдорд╛рд░реЗ рдЪрд┐рддреНрд░ рд╕реЗ рдПрдХ рдмрдВрдж
рдЖрдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдерд╛рдкрд┐рдд рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдУрдПрд╕ рд╕реНрд╡рдпрдВ рдРрд╕реА рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЦреАрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
AWTUtilities рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
рд╣реБрдП , рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб:
if((com.sun.awt.AWTUtilities.isTranslucencySupported (com.sun.awt.AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT)) && (com.sun.awt.AWTUtilities.isTranslucencyCapable (GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration()))) {
PERPIXEL_TRANSLUCENT рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рди рдХреЗрд╡рд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рд╣реИ рдХрд┐, рдореЛрдЯреЗ рддреМрд░ рдкрд░, "рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдЫреЗрдж", рдФрд░ рдпрд╣ рднреА рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЕрдлрд╕реЛрд╕, рдЙрдбрд╝рд╛рди рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ 98), рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЬрд╛рдВрдЪ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рддрдм рдЬрдм рдЖрдк рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдкрд╡рд╛рдж рдЙрдбрд╝ рдЬрд╛рдПрдЧрд╛ред
рдлрд┐рд░ рднреА, рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреБрд░рд╛рдирд╛ рдЬрд╛рд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ
AWTUtilities рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдлрд┐рд░ рдЖрдк
рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ
AWTUtilitiesWrapper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
AWTUtilities рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рдореМрдХрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдиреЗ рдЬрд╛рд╡рд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдЕрдзрд┐рдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд╕реАрдзреЗ
AWTUtilities рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:
- рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╢реАрд░реНрд╖рдХ рдкрдЯреНрдЯреА рдХреЛ рд╣рдЯрд╛ рджреЗрдВ (рдорд╛рдирдХ рдУрдПрд╕ рд╕рдЬрд╛рд╡рдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ):
this.setUndecorated(true);
- рдЦрд┐рдбрд╝рдХреА рдХреЛ рдкрд╛рд░рднрд╛рд╕реА рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдВ:
com.sun.awt.AWTUtilities.setWindowOpaque(this, false);
- рд╡рд┐рдВрдбреЛ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ:
com.sun.awt.AWTUtilities.setWindowOpacity(this, .75);
рджреВрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдорд╛рди рд╣рдорд╛рд░реЗ рдмреАрдЪ 0 - 1 рдХреЗ рдмреАрдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдорд╛рдорд▓рд╛ 75%)ред
рддреБрдо рднреА рдЦрд┐рдбрд╝рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ
рджрдмрд╛рд╡ - рдЗрдЪреНрдЫрд┐рдд рдЖрдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд┐рдбрд╝рдХреА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
com.sun.awt.AWTUtilities.setWindowShape(this, s);
рдЕрдм, рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ, рд╕рдм рдХреБрдЫ рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрдВрдХрдбрд╝реЗ рд╕реЗ рдкрд░реЗ рд╣реИ рд╡рд╣ рдирд╣реАрдВ рд╣реИ
рди рдХреЗрд╡рд▓ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ рдХреНрд▓рд┐рдХреЛрдВ рдкрд░ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рди рдХрд░реЗрдВ (рдпрд╛рдж рд░рдЦреЗрдВ
" рд╕реНрд╡рд┐рдВрдЧ рд╣рдХреНрд╕ " рдкреБрд╕реНрддрдХ рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг ) - рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдорд╛рдирдХ рд╢реАрд░реНрд╖рдХ рдмрд╛рд░ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╣реАрдВ рднреА рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ (рдЗрд╕рдХреЗ рд▓рд┐рдП I
рдПрдХ рд╣реА рдХрд┐рддрд╛рдм рд╕реЗ MoveMouseListener рд╡рд░реНрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛) - "рдмрдВрдж рдХрд░реЗрдВ" рдмрдЯрди рдХреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЧреИрд░-рдорд╛рдирдХ рднреА
рдпреЗ рд░реВрдк рд╣реИрдВ!
рдЕрдЧрд▓рд╛ рдХрд╛рд░реНрдп: рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЪрд┐рддреНрд░ рд╕реЗ, рдЕрдЧреНрд░рднреВрдорд┐ рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдкрд░, рдЙрд╕рдХрд╛ рдмрдВрдж рд▓реВрдк рдмрдирд╛рдПрдВред рдореЗрд░реА рд╡рд┐рдХреГрдд рдпрд╛рддрдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрдВрджрд░ рдпреБрд╡рд╛ рдорд╣рд┐рд▓рд╛ рдХреЛ рдЧреБрдорд░рд╛рд╣ рдХрд┐рдпрд╛:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ
рдЙрддреНрддрд▓ рдкрддрд╡рд╛рд░ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдордирд╛ рдХрд░ рджрд┐рдпрд╛ - рд╣рдорд╛рд░реА рдпреБрд╡рд╛ рдорд╣рд┐рд▓рд╛ рди рдХреЗрд╡рд▓ рдмрд╣реБрдд рдЙрддреНрддрд▓ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрддреНрддрд▓ рднреА рд╣реИред рд╢рд╛рдо рдХреЛ, "рдорд╛рдереЗ" рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдореВрд░реНрдЦ рджрд┐рдорд╛рдЧ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдереЗ:
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдпрдд рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдкрд┐рдХреНрд╕рд▓ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдкрд┐рдХреНрд╕реЗрд▓ рдкрд░ рдЬрд╛рдПрдВ ред рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИ:
static Shape contour(final BufferedImage i) { final int w = i.getWidth(); final int h = i.getHeight(); final Area s = new Area(new Rectangle(w, h)); final Rectangle r = new Rectangle(0, 0, 1, 1); for (ry = 0; ry < h; r.y++) { System.out.println(ry + "/" + h); for (rx = 0; rx < w; r.x++) { if ((i.getRGB(rx, ry) & 0xFF000000) != 0xFF000000) { s.subtract(new Area( r )); } } } return s; }
рдпрд╣рд╛рдБ, рдкрд╛рд░рднрд╛рд╕реА рдкрд┐рдХреНрд╕рд▓ рдХреЛ рдкрд╛рд░рднрд╛рд╕реА рднреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП
рдЕрд▓реНрдлрд╛ <255) - рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рднреА рд░рдВрдЧ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рд╕рдлреЗрдж: 0xFFFFFF)ред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреБрдЫ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдЧрддрд┐, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА 100 рдорд┐рдирдЯ рдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░ рдкрд░ 10 рдорд┐рдирдЯ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкрд░рд┐рдЪрдп рджрд┐рдЦрд╛рдИ рди рджреЗред рд╣рд╛рдВ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рдлреЙрд░реНрдо рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рд╕рд╣реЗрдЬрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬрд▓реНрджреА рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЯреЗрдк рд▓реЛрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐
рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЖрджрд┐рдо рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ
ava.io.Serializable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рднреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ: рди рддреЛ рдЖрдХрд╛рд░, рдФрд░ рди рд╣реА рдЗрд╕рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рд╣реИрдВ! рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ
java.awt.geom.PathIterator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореЛрдЪреНрдЪ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░
java.awt.geom.General.ath рдХреНрд▓рд╛рд╕, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╕рдореЛрдЪреНрдЪ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:
static void save(final Shape s, final DataOutput os) throws IOException { final PathIterator pi = s.getPathIterator(null); os.writeInt(pi.getWindingRule()); System.out.println(pi.getWindingRule()); while (!pi.isDone()) { final double[] coords = new double[6]; final int type = pi.currentSegment(coords); os.writeInt(type); System.out.println(type); for (final double coord : coords) { os.writeDouble(coord); System.out.println(coord); } System.out.println(""); pi.next(); } }
Java.io.DataOutput рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдХрд╣реАрдВ рднреА рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ - рдореИрдВрдиреЗ рджреБрд░реНрд▓рдн рд╡рд░реНрдЧ
java.io.andomAccessFile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк
java.io.ObjectOutputream рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк (рдФрд░ рднреА рдмреЗрд╣рддрд░) рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреНрд▓рд╛рд╕-рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЖрдк рдЗрд╕реЗ рдРрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рднреА рдирд┐рдХрд╛рд▓ рд╕рдХреЗрдВред
static Shape load(final DataInput is) throws IOException { final GeneralPath gp = new GeneralPath(is.readInt()); final double[] data = new double[6]; CYC: while (true) { final int type = is.readInt(); for (int i = 0; i < data.length; i++) { data[i] = is.readDouble(); } switch (type) { case PathIterator.SEG_MOVETO: gp.moveTo(data[0], data[1]); break; case PathIterator.SEG_LINETO: gp.lineTo(data[0], data[1]); break; case PathIterator.SEG_QUADTO: gp.quadTo(data[0], data[1], data[2], data[3]); break; case PathIterator.SEG_CUBICTO: gp.curveTo(data[0], data[1], data[2], data[3], data[4], data[5]); break; case PathIterator.SEG_CLOSE: break CYC; } } return gp.createTransformedShape(null); }
рдмреЗрд╢рдХ, рдПрдХ рд╕рд╣реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛!)ред рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╕рдореЛрдЪреНрдЪ рдмрд╛рдИрдкрд╛рд╕ рджрд┐рд╢рд╛: рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд рдпрд╛ рд╡рд╛рдорд╛рд╡рд░реНрдд (рдкреВрд░реНрдгрд╛рдВрдХ)
- рдмреНрд▓реЙрдХ рдХреА рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛:
- рд╡рдХреНрд░ рдкреНрд░рдХрд╛рд░ (рдкреВрд░реНрдгрд╛рдВрдХ)
- рд╡рдХреНрд░ рдХреЗ рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ (6 рднрд┐рдиреНрди рдХреЗ рд╕рд░рдгреА)
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ -
рдкреЗрдВрдЯ (рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЬреА) рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдХреЗ, рдпрд╛ рдмрд▓реНрдХрд┐,
рдкреЗрдВрдЯрдХрдВрдкреЛрдиреЗрдВрдЯ (рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЬреА)рд╕рдм рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЦреБрдж рдПрдХ рдЦрд┐рдбрд╝рдХреА рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рднреА рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдмрдВрдж рдмрдЯрди рдкрд░ рд╕реАрдорд┐рдд рдХрд░реВрдВрдЧрд╛ред
- рджреЗрд╢реА рд╕реНрд╡реЗрдЯ рдирд┐рдпрдВрддреНрд░рдг:
- рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рджреГрд╢реНрдп рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ
- рд╕реНрд╡рд┐рдВрдЧ рдХрдВрдЯреНрд░реЛрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди:
- рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд▓рд┐рдЦреЗрдВ
- рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдХрдард┐рди рдкрд░рд┐рд╡рд░реНрддрди (рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛)
- рдЕрдкрдиреА рдЦреБрдж рдХреА рджреЗрдЦреЛ рдФрд░ рдорд╣рд╕реВрд╕ рд▓реЗрдЦрди:
- рдкрд░реЗрд╢рд╛рдиреА
- рдмреЗрд╢рдХ, рд╕рд┐рдВрде рд╣реИ ...
- Javax.swing.plaf.LayerUI рдХреЗ рд╕рд╛рде рдЭреВрд▓реЛрдВ рдХреЛ рд╕рдЬрд╛рддреЗ рд╣реБрдП
- рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 1.7.0 рд╕реЗ рдЙрдкрд▓рдмреНрдз :(
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдЧрдпрд╛:
- рд╣рдо рдПрдХ рдЪрд┐рддреНрд░ рдФрд░ рдПрдХ рд╕рдореЛрдЪреНрдЪ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд▓рд┐рдП
- рдЬреЗрдмрдЯрди рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░
- рдЗрд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдПрдВ:
this.setOpaque(false);
- рдкреГрд╖реНрдарднреВрдорд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ:
this.setContentAreaFilled(false);
- рд╣рдо рдПрдХ рдлрд╝реНрд░реЗрдо рдпрд╛ рдлрд╝реЛрдХрд╕ рд▓рд╛рдЗрди рднреА рдирд╣реАрдВ рдЦреАрдВрдЪреЗрдВрдЧреЗ:
this.setFocusPainted(false); this.setBorderPainted(false);
- рд╕реНрдкрд╖реНрдЯ рдЖрдпрд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдмрдВрдзрдХ рди рд╣реЛ
( LayoutManager ) рдиреЗ рддрд╕реНрд╡реАрд░ рдЦрд░рд╛рдм рдирд╣реАрдВ рдХреА:
this.setSize(this.result.size); this.setMinimumSize(this.result.size); this.setMaximumSize(this.result.size);
- рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдВрдЯрдХрдВрдкреЛрдиреЗрдВрдЯ (рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЬреА) рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдирд╛
- рд╣рдорд╛рд░реЗ рдкрде рдкрд░ рд╕рдорд╛рди рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ (int x, int y) рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓реЗрдВ
рдлрд┐рдирд┐рддрд╛ рд▓рд╛ рдХреЛрдореЗрдбрд┐рдпрд╛
рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдо рдкрд░рд┐рд╖реНрдХрд░рдг рд╕реНрдкрд░реНрд╢ рдмрдирд╛рддреЗ рд╣реИрдВ: рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ, рд╡рд┐рдВрдбреЛ рдореЗрдВ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрд╕ рдкрд░ рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛рдПрдВред рд╣рдо рд▓реЙрдиреНрдЪ рдФрд░ рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдореЗрд░реА рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддрд░рд╣, рдореИрдВ рдЙрдиреНрд╣реЗрдВ
xp-dev.com :
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ ,
svn рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВ
рдЧреНрд░рд╣рдг рд╣реЗрд▓рд┐рдпреЛрд╕ рдХреЗ рд▓рд┐рдП рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ: рдЬрд╛рд╡рд╛ 6 рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдФрд░ рдЬрд╛рд╡рд╛ 7 рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ 7ред рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдереЗ, рдФрд░ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпред
рдкрд░ рдкрдврд╝реЗрдВ: