2016-03-15 2 views
0

J'essaie de mettre des lignes diagonales à travers une image que j'ai. C'est un objet BitmapData si cela compte. Je souhaite que les lignes diagonales soient des pixels blancs ou transparents.Existe-t-il un moyen d'ajouter un motif de lignes diagonales à travers une image de données bitmap?

Je vais marquer comme un filigrane parce que cela peut être le même principe.

+1

Créez deux objets Bitmap. Prenez l'image et placez-la dans un bitmap, placez la ligne dans un autre bitmap (bmpData doit avoir un canal de transparence). 'addChild' les Bitmaps dans un conteneur Canvas (ie: Sprite) dans l'ordre de l'image BMP suivi de la ligne BMP. Quoi qu'il en soit, il y a aussi un 'setPixel' où vous pouvez faire une boucle for qui dessine des pixels diagonaux comme la ligne. Regardez aussi dans blendModes si vous voulez superposer le style filigrane sur une autre image –

Répondre

1

Oui, il y a a suite of methods BitmapData offers pour colorier des pixels, des rectangles et même d'autres objets héritant IBitmapDrawable (la plupart des objets d'affichage intégrés). La méthode la plus simple serait probablement de dessiner la forme souhaitée et d'utiliser draw() pour placer cette forme sur les données existantes.

0

Merci à tous pour m'avoir donné des directives. Jusqu'ici, j'ai été capable de créer une ligne diagonale et de la répéter jusqu'à une largeur et une hauteur variables.

Je dois encore joindre l'image et les lignes mais je l'appelle une nuit.

var lineBitmapData:BitmapData; 
var targetSprite:SpriteVisualElement; 
var spriteVE:SpriteVisualElement = new SpriteVisualElement(); 
var fillSprite:Sprite = new Sprite(); 

// draw our diagonal line on a sprite 
fillSprite.graphics.lineStyle(1, 0xFF0000); 
fillSprite.graphics.moveTo(0, 10); 
fillSprite.graphics.lineTo(10, 0); 

// draw all the pixels into a bitmap data object 
lineBitmapData = new BitmapData(10, 10, true, 0x000000000000000000); 
lineBitmapData.draw(fillSprite); 

// create a new sprite and with the graphics object 
// draw a rectangle and fill it with a repeating bitmap data 
targetSprite = new SpriteVisualElement(); 
targetSprite.graphics.beginBitmapFill(lineBitmapData, null, true); 
targetSprite.graphics.drawRect(0, 0, width, height); 
targetSprite.graphics.endFill(); 

// add 
//targetSprite.blendMode = BlendMode.ERASE; 
spriteVE.addChild(targetSprite); 

addElement(spriteVE);