2017-04-26 4 views
0

Si j'ai une image de 1px d'épaisseur Comment devrais-je procéder à la duplication afin qu'il devienne plus grand, ou comment je l'étirer.Direct2d dupliquer/étirer 1px image

Parce que vous pouvez voir avec mon code ne est pas la meilleure boucle DrawImage

colorMatrixEffect->SetInput(0, texture); //texture = ID2D1Bitmap* 
    D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(color->r, 0, 0, 0, 0, color->g, 0, 0, 0, 0, color->b, 0, 0, 0, 0, 1, 0, 0, 0, 0); 
    colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix); 

    if (rect.right == 0) 
    { 
     device_context_d2d1->DrawImage(colorMatrixEffect.get(), 
      D2D1::Point2F(newRect.left + offsetX, newRect.top + offsetY)); 
    } 
    else 
    { 
     for (int i = 0; i < static_cast<int>(newRect.right); i++) 
     { 
      device_context_d2d1->DrawImage(colorMatrixEffect.get(), 
       D2D1::Point2F(newRect.left + offsetX + i, newRect.top + offsetY)); 
     } 
    } 

Répondre

0

Pour étirer l'image que vous pouvez utiliser la transformation mise à l'échelle.

Vous pouvez également rendre votre image à D2D1Bitmap et dessiner comme une image bitmap, il y a DrawBitmap méthode avec plus de paramètres qui vous permet de dessiner une partie de l'image bitmap à n'importe quelle partie de l'appareil cible avec étirement.

Pour dessiner des motifs répétés, vous pouvez créer bitmap ou d'un pinceau de l'image avec la méthode CreateBitmapBrush/CreateImageBrushextendMode* et définir des propriétés de D2D1_EXTEND_MODE_WRAP valeur, puis il suffit de remplir la forme désirée avec cette brosse.