рджреГрд╢реНрдп рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!

рдПрдХ рдЬреАрдЖрдИрдПрдл рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░ , рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреВрдВ рдФрд░ рдХреЛрдб рдХреЗ "рдореИрдк" рдХреЛ рджреЗрдЦреВрдВ?

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ "рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкрд┐рдХреНрд╕реЗрд▓ рд░рдЦрдиреЗ" рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕реНрдХреНрд╡реЗрд░рд┐рдВрдЧ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрдд рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ 129 = 11 * 12-3, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреБрдж рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдереЛрдбрд╝рд╛ рднрдпрд╛рдирдХ рдХреЛрдб
public static ImageSize Generate(uint PixelsCount, double MaximumDeltaPercent=1f, uint MaximumAbsoluteDelta=10, double MaximumAspectRatio=1.77) { //check if this is empty image if (PixelsCount==0) return new ImageSize(1,1); //check if this is a square double sqrt = Math.Truncate(Math.Sqrt(PixelsCount)); if (Math.Pow(sqrt, 2) == PixelsCount) return new ImageSize((ushort)sqrt, (ushort) sqrt); //  ,  AspectRatio - ,     .      . if (PixelsCount<=10) MaximumAspectRatio = double.MaxValue; double percentdelta = PixelsCount/(MaximumDeltaPercent*100); uint height = (ushort) Math.Truncate(Math.Sqrt(PixelsCount)); uint width = (ushort) (height+1); while (width/(height*1.0f)<MaximumAspectRatio) { ulong Result = width*height; if (Result==PixelsCount) { if (width<=ushort.MaxValue && height<=ushort.MaxValue) { return new ImageSize((ushort) width, (ushort) height); } } if (Result>PixelsCount) { if ((Result-PixelsCount)<=percentdelta || Result-PixelsCount<=MaximumAbsoluteDelta) { if (width <= ushort.MaxValue && height <= ushort.MaxValue) { return new ImageSize((ushort) width, (ushort) height); } } height--; continue; } if (Result < PixelsCount) { width++; } } throw new Exception(string.Format("     {0}    Aspect Ratio.   \n : PC:{0} MDP:{1} MAD:{2} MAR{3}",PixelsCount,MaximumDeltaPercent,MaximumAbsoluteDelta,MaximumAspectRatio)); } 

рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдПрдХ рд╕реНрдЯреНрд░реАрдо рдпрд╛ рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдореА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
рдореЗрд░реЗ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ

рдХреЛрдб рд╣рд░реЗ рд░рдВрдЧ рдХреА рдЫрдк рдХреЗ рд╕рд╛рде рдФрд╕рдд рд╡рд░реНрджреА рдЧреНрд░реЗ рдкрд░ рд╣реИред рд▓реЗрдХрд┐рди рдзрд╛рд░реАрджрд╛рд░ред

Win.exe рд╕реЗ Explorer.exe

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдЬреАрдм рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдХрд╛рд▓реА рдкрдЯреНрдЯреА рд╣реИред рдЬреЛ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЖрдЗрдХрди рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдореА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реЗ Workqueue.c

рдХреЛрдб рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рдЫреАрдВрдЯреЗ рдХреЗ рд╕рд╛рде рдФрд╕рдд рд░реВрдк рд╕реЗ рдЧреНрд░реЗ рд╣реИред рд╕рдм рд╕рдм рдореЗрдВ, рдпрд╣ рдиреАрд░рд╕ рд▓рдЧрддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рд╕рдорд╛рди рд░реВрдк рд╕реЗ рднреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛!

рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрд░реЛрдд
рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо
рдкреБрдирд╢реНрдЪ рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдПрдХ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЛ рдПрдХ рд╢реЗрд╖ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬрд╛рдирддреЗ рд╣реИрдВ - рдореИрдВ рдЖрдкрд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирддреА рдХрд░рддрд╛ рд╣реВрдВред

Source: https://habr.com/ru/post/In214165/


All Articles