2016-10-26 19 views
-2

私は数日間試してきましたが、ここでロジックを把握することはできません。タオルに投げ込む。forループ内の文がループで実行されない場合

私は画像オブジェクトを持っています。これを10 "x 8"の等しいセルのグリッドに切り詰めます。 10番目の列の後、次の行にドロップし、その後の10個の列などを収集すると仮定します。私はそれを次の行に再帰させて、その行に置いておくのではなく、1つのセルを取得して最初の行に戻します。

 $startColumn = 1 
     $currentCell = 1 
     $currentColumn = 1 
     $currentRow = 1 

     For($i = 1; $i -lt 81; $i++) 
     { 
      $startleftCoord = 292 
      $starttopCoord = 87 
      $startrightCoord = 390 
      $startbottomCoord = 162 
      $cellheight = 75 
      $cellwidth = 98 



       if ($firstiterationcomplete -eq 1) { 


       "Changing columns" 
       $startleftCoord = $startleftCoord+($currentColumn*$cellwidth)+(4.05*$currentColumn) 
       $startrightCoord = $startrightCoord+($currentColumn*$cellwidth)+(4.05*$currentColumn) 


        if ($currentColumn -eq 9) { 
         "Changing Rows"      
         $currentRow++ 
         $currentColumn = $startColumn 

         $startleftCoord = $startleftCoord 
         $startrightCoord = $startrightCoord 
         $starttopCoord = $starttopCoord+($currentRow*$cellheight)+(4.25*$currentRow) 
         $startbottomCoord = $startbottomCoord+($currentRow*$cellheight)+(4.25*$currentRow) 
        } 
       } 


      "Curent column is " + $currentColumn 
      "Row count is " + $currentRow 

      #save cellshot 
      $cellBounds = [Drawing.Rectangle]::FromLTRB($startleftCoord,$starttopCoord, $startrightCoord, $startbottomCoord) 
      $cellObject = New-Object Drawing.Bitmap $cellBounds.Width, $cellBounds.Height 
      $cellGraphics = [Drawing.Graphics]::FromImage($cellObject) 
      $cellGraphics.CopyFromScreen($cellBounds.Location, [Drawing.Point]::Empty, $cellBounds.Size) 
      $cellGraphics.Dispose()  
      $cellObject.Save($FilePath) 

      $currentColumn++ 
      $currentCell++ 
      $firstiterationcomplete = 1 
      "Saved CELLSHOT to $FilePath." 
     } 
+0

をスキップされ、次の理由を簡単に説明が不足している?あなたのコードにはPHP、Pythonの、またはforeachループが含まれていません。 – melpomene

+0

だけにそれを編集しましたforループを含める...私は専門家ではなく、仕事をやろうとしています。それはpowershellです –

+0

私はそれがpowershellだと知っています。なぜPHPとPythonとforeachにタグを付けましたか? – melpomene

答えて

0

IFブロックを何度も書き直しました。私はちょうど列2 `」狂ったタグとまでは何

Starting to loop image for each ball" 


[int]$startCell = 1 
[int]$startRow = 1 
[int]$startColumn = 1 
[int]$totalLoops = 81 


[int]$startleftCoord = 293 
[int]$starttopCoord = 90 
[int]$startrightCoord = 385 
[int]$startbottomCoord = 160 
[int]$cellheight = 75 
[int]$cellwidth = 100 



    Do 
    {   


     #get the current time and build the filename from it 
     $Time = (Get-Date) 

     [string] $FileName += "-cellshot" 
     $FileName = "$($Time.Month)" 

     $FileName += '-' 
     $FileName += "$($Time.Day)" 
     $FileName += '-' 
     $FileName += "$($Time.Year)" 
     $FileName += '-' 
     $FileName += "$($Time.Hour)" 
     $FileName += '-' 
     $FileName += "$($Time.Minute)" 
     $FileName += '-' 
     $FileName += "$($Time.Second)" 
     $FileName += '-' 
     $FileName += "$($Time.Millisecond)" 
     $FileName += '-' 
     $FileName += [string]$currentCell 

     $FileName += '.png' 

     #use join-path to add path to filename 
     [string] $FilePath = (Join-Path $Path $FileName) 



     if (!$currentCell -OR !$currentColumn -OR !$currentRow){ 
      "Initializing Globals" 

      $currentCell = $startCell 
      $currentColumn = $startColumn 
      $currentRow = $startRow 

     } 


     "Designate capture point" 

     if ($currentColumn -gt 1 -AND $currentColumn -lt 11) { 

      "Calculating side coordinates offset" 
      $newleftCoord = $startleftCoord+($currentColumn*$cellwidth) 
      $newrightCoord = $startrightCoord+($currentColumn*$cellwidth) 

     } elseif ($currentColumn -eq 11) { 

      "Resetting column coordinates " 
      $currentColumn = $startColumn 
      $newleftCoord = $startleftCoord 
      $newrightCoord = $startrightCoord 

      "Compensating for multiple rows offest" 
      $newtopCoord = $starttopCoord+($currentRow*$cellheight) 
      $newbottomCoord = $startbottomCoord+($currentRow*$cellheight) 
      $currentRow++ 


     }else{ 
      "Getting number one" 
      $newleftCoord = $startleftCoord 
      $newtopCoord = $starttopCoord 
      $newrightCoord = $startrightCoord 
      $newbottomCoord = $startbottomCoord 
     } 



     "Current Column is " + $currentColumn 
     "Current row is " + $currentRow 
     "Current cell is " + $currentCell 


     #save cellshot 
     $cellBounds = [Drawing.Rectangle]::FromLTRB($newleftCoord,$newtopCoord, $newrightCoord, $newbottomCoord) 
     $cellObject = New-Object Drawing.Bitmap $cellBounds.Width, $cellBounds.Height 
     $cellGraphics = [Drawing.Graphics]::FromImage($cellObject) 
     $cellGraphics.CopyFromScreen($cellBounds.Location, [Drawing.Point]::Empty, $cellBounds.Size) 
     $cellGraphics.Dispose()  
     $cellObject.Save($FilePath) 





     $currentColumn++ 
     $currentCell++ 


    }Until ($currentCell -eq $totalLoops) 
Start-Sleep -Second 20 
} 




     #load required assembly 
     Add-Type -Assembly System.Windows.Forms 

     Start-Sleep -Seconds 5  

     $ballarray = @{} 

     Do { 



      #run screenshot function 
      # If ($ballarray.count -eq 20){ 
      # GenScreenshot 
      #  "Snapped screenshot - $Filename ." 
      # }else{ 
       Do{ 

       GetNewBall 
       }Until($currentCell -eq 80) 
      #} 


      #$bounds = [Drawing.Rectangle]::FromLTRB(307,129, 1060, 668) 
      #screenshot $bounds $Filepath 

      #Start-Sleep -Second 10 
     }Until($ballarray.count -eq 20)` 
関連する問題