pdfsharp asp.net mvc example : Convert pdf file to jpg on application Library tool html .net azure online iPhoneInAction37-part1732

346
C
HAPTER
18 
Media: images and sounds
Once you import an image into your program, you can display it. If you’re going to 
stay entirely within the simple methods of the 
UIKit
, you’ll want to use the 
UIImage-
View
class to display the image.
18.1.2 Drawing a UIImageView
We’ve already used the 
UIImageView
in our programs when displaying pictures. We’re 
now ready to talk about the details of how it works.
There are two ways to initialize a 
UIImageView
. First, you can use the 
initWith-
Image:
method, which allows you to pass a 
UIImage
, as follows:
UIImage *myImage1 = [UIImage imageNamed:@"sproul1.jpg"];
UIImageView *myImageView =
[[UIImageView alloc] initWithImage:myImage1];
[self.view addSubview:myImageView];
Alternatively, you can use a plain 
initWithFrame:
method and modify the object’s 
properties by hand. Table 18.2 shows a few of the properties and methods that you’re 
most likely to use when doing more extensive work with a 
UIImageView
To load a normal image, you could use the 
image
property, but there’s usually little 
reason to use it rather than the 
initWithImage:
method—unless you’re dynamically 
changing your image. If you want to create a set of images to animate, it’s useful to 
take advantage of the other 
UIImageView
methods and properties.
You can load an array of images into a 
UIImageView
, declare how fast and how 
often they should animate, and start and stop them as you see fit. A simple example of 
this is shown in listing 18.1.
- (void)viewDidLoad {
UIImage *myImage1 =                              
[UIImage imageNamed:@"sproul1.jpg"];
UIImage *myImage2 =                            
Table 18.2 A few properties and methods of note for UIImageView
Method or property
Type
Summary
animationDuration
Property
Specifies how often an animation cycles
animationImages
Property
Identifies an NSArray of images to load into the 
UIImageView
animationRepeatCount Property
Specifies how many times to run an animation cycle
image
Property
Identifies a single image to load into a UIImageView
startAnimating
Method
Starts the animation
stopAnimating
Method
Stops the animation
Listing 18.1 UIImageView allows for animated images
Loads images
Licensed to Nick Wood <nwood888@yahoo.com>
Convert pdf file to jpg on - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
convert from pdf to jpg; pdf to jpeg
Convert pdf file to jpg on - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
convert pdf file to jpg format; convert pdf to jpg 100 dpi
347
Drawing simple images with Core Graphics
[UIImage imageNamed:@"sproul2.jpg"];  
UIImage *myImage3 =                             
[UIImage imageNamed:@"sproul3.jpg"];
UIImage *myImage4 =                             
[UIImage imageNamed:@"sproul4.jpg"];
UIImageView *myImageView =        
[[UIImageView alloc]          
initWithFrame:[[UIScreen
mainScreen] bounds]]; 
myImageView.animationImages =              
[NSArray arrayWithObjects:myImage1,
myImage2,myImage3,myImage4,nil];    
myImageView.animationDuration = 4;      
[myImageView startAnimating];             
[self.view addSubview:myImageView];
[myImageView release];
[super viewDidLoad];
}
Taking advantage of 
UIImageView
’s animation capability is one of the main reasons 
that you might want to load images by hand rather than do it through Interface 
Builder. 
18.1.3 Modifying an image in the UIKit
Now you’ve seen how to create images and load them into image views programmati-
cally. Surely, the next thing to do is to start modifying them.
Unfortunately, you have only limited capability to do so while working with 
UIImageView
. You can make some changes, based on simple manipulations of the view. 
For example, if you resize your 
UIImageView
, it’ll automatically resize the picture it 
contains. Likewise, you can decide where to draw your 
UIImageView
by setting its 
frame to something other than the whole screen. You can even layer multiple images
by using multiple 
UIImageView
s.
This all starts to get unwieldy pretty quickly, though, and you can’t do anything fan-
cier, like transforming your images or modifying how they stack through blending or 
alpha transparency options. To do that sort of work (and to start stacking graphics, 
not just views) you need to learn about Core Graphics.
UIImage
offers some simple ways to access Core Graphics functionality that doesn’t 
require going out to the Core Graphics framework (or learning about contexts or the 
other complexities that underlie its use). We’re going to talk about those briefly here, 
but, for the most part, Core Graphics will wait for the next chapter, which concen-
trates on the entire Quartz 
2D
graphics engine. 
18.2 Drawing simple images with Core Graphics
Although it doesn’t give access to the entire Core Graphics library of transformations 
and other complexities, the 
UIImage
class does include five simple methods that take 
advantage of the way Core Graphics works. They’re described in table 18.3.
Loads images
Creates 
UIView
Starts 
animation
Licensed to Nick Wood <nwood888@yahoo.com>
Online Convert Jpeg to PDF file. Best free online export Jpg image
Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start immediately to sort the files, try out some settings and then create the
change pdf to jpg file; change pdf file to jpg file
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
change from pdf to jpg; convert multiple page pdf to jpg
348
C
HAPTER
18 
Media: images and sounds
The trick is that these methods cannot be used as part of 
viewDidLoad:
or whatever 
other method you usually use to load up your objects. That’s because they depend 
upon a graphical context to work. We’re going to talk about contexts more in the next 
chapter, but a graphical context is a destination that you’re drawing to, like a window, 
PDF
file, or a printer.
On the iPhone, 
UIView
s automatically create a graphical context as part of their 
CALayer
, which is a Core Animation layer associated with each 
UIView
. You can access 
this layer by writing a 
drawRect:
method for the 
UIView
(or rather, for a new subclass 
that you’ve created). You’d usually have to capture a special context variable to do this 
type of work, but the 
UIView
methods take care of this for you, to keep things simple.
Listing 18.2 shows how to collage together a few pictures using this method.
- (void)drawRect:(CGRect)rect {
UIImage *myImage1 = [UIImage imageNamed:@"sproul1.jpg"];
UIImage *myImage2 = [UIImage imageNamed:@"sproul2.jpg"];
UIImage *myImage3 = [UIImage imageNamed:@"sproul3.jpg"];
[myImage1 drawAtPoint:CGPointMake(0,0) blendMode:kCGBlendModeNormal
alpha:.5];
[myImage2 drawInRect:CGRectMake(10, 10, 140, 210)];
[myImage3 drawInRect:CGRectMake(170, 240, 140, 210)];
}
Note that the 
drawAtPoint:
method gives you access to more complex possibilities, 
such as blending your pictures (using Photoshop-like options such as color dodge and 
hard light) and making them partially transparent. Here you’re using a normal blend, 
but only 50 percent transparency (hence the use of the 
drawAtPoint:
method). The 
rest of the code is standard enough. The simplicity of using these singular draw com-
mands rather than going to the effort of creating multiple 
UIImageView
objects speaks 
for itself (and it’s presumably more efficient too).
There’s still a lot that we can’t do until we delve fully into the iPhone’s Core Graph-
ics framework, but for now we’ve got some control, which should be sufficient for 
Table 18.3 Instance methods for drawing a UIImage
Method
Summary
drawAsPatternInRect:
Draws the image inside the rectangle, 
unscaled, but tiled as necessary
drawAtPoint:
Draws the complete unscaled image with 
the CGPoint as the top-left corner
drawAtPoint:blendMode:alpha: A more complex form of drawAtPoint:
drawInRect:
Draws the complete image inside the 
CGRect, scaled appropriately
drawInRect:blendMode:alpha:
A more complex form of drawInRect:
Listing 18.2 A UIView’s drawRect: allows you to use lower-level draw commands
Licensed to Nick Wood <nwood888@yahoo.com>
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
C# sample code for PDF to jpg image conversion. This demo code convert PDF file all pages to jpg images. // Define input and output files path.
best pdf to jpg converter online; best convert pdf to jpg
C# Image Convert: How to Convert Dicom Image File to Raster Images
RasterEdge.XDoc.Office.Inner.Office03.dll. RasterEdge.XDoc.PDF.dll. This demo code convert dicom file all pages to jpg images.
convert multiple pdf to jpg online; convert pdf to jpg for online
349
Accessing photos
most of your common media needs. If you need more control, skip right ahead to the 
next chapter.
We’ve talked lots about images, and we’ve pre-
sumed so far that you’re loading them from your proj-
ect’s bundle. But what if you want to let a user select 
photographs? That’s the topic of our next section.
18.3 Accessing photos
You can use the 
SDK
to access pictures from an 
iPhone’s photo library or its camera roll. You can also 
allow a user to take new photos. This is all done with 
the 
UIImage-PickerController
, another modal con-
troller that manages a fairly complex graphical inter-
face without much effort on your part. Figure 18.2 
shows what it looks like.
18.3.1 Using the image picker
The 
UIImagePickerController
is loaded up by creat-
ing the object, setting a few variables, and presenting it 
as a modal view controller. By default, the image picker 
controller will allow users to access (and optionally 
edit) the pictures in their photo library:
UIImagePickerController *myImagePicker =
[[UIImagePickerController alloc] init];
myImagePicker.delegate = self;
myImagePicker.allowsImageEditing = NO;
[self presentModalViewController:myImagePicker animated:YES];
Once you’ve created your image picker controller, you need to have its delegate 
respond to two methods: 
imagePickerController:didFinishPickingImage:edit-
ingInfo:
and 
imagePickerControllerDidCancel:
. For the first method, you should 
dismiss the modal view controller and respond appropriately to the user’s picture 
selection, and for the second, you only need to dismiss the controller.
Overall, the image picker controller is easy to use because you’re mainly reacting to 
a picture that was selected. We’ve got a complete example of its use in the next section.
18.3.2 Taking photos
As we noted earlier, the 
UIImagePickerController
has three possible sources, repre-
sented by these constants: 
UIImagePickerControllerSourceTypePhotoLibrary
, a picture from the photo 
library
UIImagePickerControllerSourceTypeSavedPhotosAlbum
, a picture from the 
camera roll
UIImagePickerControllerSourceTypeCamera
, new picture taken by the camera
Figure 18.2 The image picker  
is another preprogrammed 
controller for your use.
Licensed to Nick Wood <nwood888@yahoo.com>
C# Create PDF from images Library to convert Jpeg, png images to
C# Create PDF from Raster Images, .NET Graphics and REImage File with XDoc Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp
convert pdf file to jpg; convert multipage pdf to jpg
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Convert PDF documents to multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage. Turn multipage PDF file into image
to jpeg; best way to convert pdf to jpg
350
C
HAPTER
18 
Media: images and sounds
You should always make sure that the source is available before you launch an image 
picker controller, although this is most important for the camera. You can confirm 
that the source exists with the 
isSourceTypeAvailable:
class method:
if ([UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
Once you’ve verified the existence of a source, you can tell the image picker to use it 
with the 
sourceType
property. For example, to use the camera, do the following:
myImagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
Note that pictures taken in a program only go to that program. If you want them to go 
into the photo album, your program will have to save them there (as we’ll discuss 
momentarily).
In our experience, the camera is a bit of a resource hog. We had it grind to a halt a 
few times during testing. More than anything else, this means that you need to think 
about saving your program’s state when using the camera, because it could cause you 
to run out of memory.
We’ll have an example of using the camera in our example in section 18.4.
18.3.3 Saving to the photo album
You may wish to save a new photograph to the photo album, or you may wish to place 
a graphic created by your program there. In either case, you use the 
UIImageWriteTo-
SavedPhotosAlbum
function. It has four variables: the first lists the image, and the 
other three reference an optional asynchronous notification function to call when the 
save has been completed. Usually you’ll call the function like this:
UIImageWriteToSavedPhotosAlbum(yourImage,nil,nil,nil);
If you instead want to take advantage of the asynchronous notification, take a look at 
the 
UIKit
function reference, which is where this function is hidden away, or look at 
our example in the next chapter.
You can use this function (and a bit of trickery) to save the 
CALayer
of a 
UIView
to 
your photo album, which, for example, will allow you to save those draw commands 
that you wrote straight to the 
CALayer
earlier. This once more depends upon graphi-
cal contexts, which we’ll explain in the next chapter, but here’s how to do it:
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *collageImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(collageImage,nil,nil,nil);
In order for this to work correctly, you must link in the Quartz Core framework.
With all of the fundamentals of images now covered, we’re ready to put them 
together in our “big” example for this chapter, which is a program that collages 
together multiple pictures, first selecting them with a 
UIImagePickerController
then allowing them to be moved about with a 
UIImageView
, and finally drawing them 
to a 
CALayer
that can be saved. 
Licensed to Nick Wood <nwood888@yahoo.com>
C# WPF PDF Viewer SDK to convert and export PDF document to other
Convert PDF to image file formats with high quality, support converting PDF to PNG, JPG, BMP and GIF. C#.NET WPF PDF Viewer Tool: Convert and Export PDF.
.pdf to jpg; change pdf to jpg online
C# TIFF: C#.NET Code to Convert JPEG Images to TIFF
demo1.jpg", @"C:\demo2.jpg", @"C:\demo3.jpg" }; // Construct List in imagePaths) { Bitmap tmpBmp = new Bitmap(file); if (null Use C# Code to Convert Png to Tiff.
convert pdf page to jpg; convert .pdf to .jpg
351
Collage: an image example
18.4 Collage: an image example
The collage program depends on three objects. The 
collageViewController
, as 
usual, does most of the work. It writes out to a 
collageView
object, which exists 
mainly as a 
CALayer
to be written upon. Finally, you’ll have a 
tempImageView
object 
that allows the user to position an image after it’s been selected but before it’s perma-
nently placed.
18.4.1 The collage view controller
The collage view controller is built on a few Interface Builder objects: the view con-
troller itself; a toolbar called 
myTools
, which will be filled over the course of the pro-
gram; and the 
collageView
UIView
class, which exists as its own class file and is 
referred to in the program as 
self.view
. You’ll also need to add the Quartz Core 
framework to your project as you’ll use that save-picture trick that we just discussed.
Listing 18.3 shows the complete view controller, which is the most extensive file in 
this program.
@implementation collageViewController
- (void)viewDidLoad {  
UIBarButtonItem *picButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self
action:@selector(choosePic:)];
UIBarButtonItem *camButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self
action:@selector(takePic:)];
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self
action:@selector(savePic:)];
picButton.style = UIBarButtonItemStyleBordered;
camButton.style = UIBarButtonItemStyleBordered;
if ([UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
origToolbar = [[NSArray alloc] initWithObjects:
picButton,camButton,saveButton,nil];
} else if ([UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
origToolbar = [[NSArray alloc] initWithObjects:
picButton,saveButton,nil];
} else {
exit(0);
}
[myTools setItems:origToolbar animated:NO];
[picButton release];
[camButton release];
[super viewDidLoad];
}
-(IBAction)choosePic:(id)sender {  
Listing 18.3 A view controller manages most of the collage’s tasks
B
Sets up objects
Activates 
image picker
C
Licensed to Nick Wood <nwood888@yahoo.com>
352
C
HAPTER
18 
Media: images and sounds
UIImagePickerController *myImagePicker =
[[UIImagePickerController alloc] init];
myImagePicker.delegate = self;
myImagePicker.allowsImageEditing = NO;
[self presentModalViewController:myImagePicker animated:YES];
}
-(IBAction)takePic:(id)sender {  
UIImagePickerController *myImagePicker =
[[UIImagePickerController alloc] init];
myImagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
myImagePicker.delegate = self;
myImagePicker.allowsImageEditing = NO;
[self presentModalViewController:myImagePicker animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image
editingInfo:(NSDictionary *)editingInfo {  
[self dismissModalViewControllerAnimated:YES];
[picker release];
float percentage = [self scaleImage:image] / 2;
startingSize = CGSizeMake(image.size.width*percentage,
image.size.height*percentage);
myImageView = [[tempImageView alloc]
initWithFrame:CGRectMake(80,115,
startingSize.width,startingSize.height)];
myImageView.image = image;
myImageView.userInteractionEnabled = YES;
[self.view addSubview:myImageView];
[myTools setItems:[NSArray arrayWithObject:[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self
action:@selector(finishPic:)]] animated:YES];
mySlider = [[UISlider alloc] initWithFrame:CGRectMake(90,415,210,44)];
mySlider.value = .5;
[mySlider addTarget:self action:@selector(rescalePic:)
forControlEvents:UIControlEventValueChanged];
[self.view addSubview:mySlider];
}
- (void)imagePickerControllerDidCancel:
(UIImagePickerController *)picker {  
[self dismissModalViewControllerAnimated:YES];
[picker release];
}
-(void)rescalePic:(id)sender {  
myImageView.frame = CGRectMake(myImageView.frame.origin.x,
myImageView.frame.origin.y,
startingSize.width * mySlider.value * 2,
startingSize.height * mySlider.value * 2);
D
Activates camera
Responds to 
image selection
E
Responds to picker 
cancellation
F
Resizes 
picture
G
Licensed to Nick Wood <nwood888@yahoo.com>
353
Collage: an image example
}
-(void)finishPic:(id)sender {  
[self.view addPic:myImageView.image at:myImageView.frame];
[myImageView removeFromSuperview];
[myImageView release];
[mySlider removeFromSuperview];
[mySlider release];
[myTools setItems:origToolbar animated:NO];
}
-(void)savePic:(id)sender {  
UIGraphicsBeginImageContext(self.view.bounds.size);
myTools.hidden = YES;
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *collageImage = UIGraphicsGetImageFromCurrentImageContext();
myTools.hidden = NO;
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(collageImage,nil,nil,nil);
}
-(float)scaleImage:(UIImage *)image {  
float toSize = 1.0;
if (image.size.width * toSize > 320) {
toSize = 320 / image.size.width;
}
if (image.size.height * toSize > 460) {
toSize = 460 / image.size.height;
}
return toSize;
}
// ...
@end
Although long, this code is simple to follow in bite-sized chunks. It starts off with 
viewDidLoad:
, which sets up the 
UIToolBar
B
. We’ve long lauded Interface Builder, 
but we’ve also said that it might not be sufficient when you’re creating more dynamic 
projects. That’s the case here. You can’t efficiently fill the 
UIToolBar
in Interface 
Builder because you’re going to be changing it based on the program’s state. You’re 
placing buttons on the toolbar that call three methods: 
choosePic:
takePic:
(when 
a camera’s available), and 
savePic:
.
choosePic:
C
and
takePic:
D
are similar methods. Each calls up the image 
picker controller, but the first one accesses the photo library and the second one lets 
the user take a new picture. The wonder of these modal controllers is that you don’t 
have to do a thing between the time when you create the picker to the point where 
your user either selects a picture or cancels.
When the user selects a picture, 
imagePickerControl:didFinishPicking-
Image:editingInfo
will be called 
E
, returning control to your program. Here you do 
four things: 
Adds picture 
to CALayer
H
Saves collage
I
Scales 
image
J
Licensed to Nick Wood <nwood888@yahoo.com>
354
C
HAPTER
18 
Media: images and sounds
Dismiss the modal view controller.
Look at the picture you’ve been handed and resize it to fill a quarter or less of 
the screen.
Instantiate the image as a 
tempImageView
object, which is a subclass of 
UIImage- 
View
.
Change the toolbar so that there’s a Done button available, along with a slider.
At this point, the user will be able to do three things: 
Use 
UITouch
es to move the image view (which is covered in the 
tempImageView
class, because that’s where the touches go, as we saw in chapter 14).
Use the slider to change the size of the picture.
Click Done to accept the image size and location.
The end results of what can be produced are shown in 
figure 18.3.
Note that if the user instead canceled the image pick-
er, your 
imagePickerControllerDidCancel:
method 
would correctly shut down the modal controller 
F
.
The 
UISlider
was hooked up to the 
rescalePic:
method 
G
. It redraws the frame of the 
UIImageView
which automatically resizes the picture inside. Mean-
while, the Done button activates the 
finishPic:
method 
H
. This sends a special 
addPic:at:
message 
to the 
collageView
, which is where the 
CALayer
draw-
ing is done, and which we’ll return to momentarily. 
finishPic:
also dismisses the 
UISlider
and the 
tem-
pImageView
and resets the toolbar to its original setup.
That original toolbar had one more button that we 
haven’t covered yet: Save. It activates the 
savePic:
method 
I
, which saves a 
CALayer
to the photo library. 
Note that this method temporarily hides toolbar in the 
process. Because the toolbar is a subview of the 
UIView
it’d get included in the picture if you didn’t do this.
The last method, 
scaleImage:
J
, is the utility that 
sets each image to fill about a quarter of the screen.
This code has two dangling parts: the methods in the 
tempImageView
, which allow 
a user to move the 
UIImageView
, and the methods in the 
collageView,
which later 
draw the image into a 
CALayer
18.4.2 The collage temporary image view
The 
tempImageView
class only has one purpose: to intercept 
UITouch
es that indicate 
that the user wants to move the new image to a different part of the collage. This sim-
ple code is shown in listing 18.4.
Figure 18.3 The collager 
in use displays many 
photos simultaneously.
Licensed to Nick Wood <nwood888@yahoo.com>
355
Collage: an image example
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *thisTouch = [touches anyObject];
CGPoint thisPoint = 
[thisTouch locationInView:self];      
float newX = thisPoint.x+self.frame.origin.x;  
float newY = thisPoint.y+self.frame.origin.y;
if (newX < 0) {
newX = 0;
} else if (newX > 320) {
newX = 320;
}
if (newY < 0) {
newY = 0;
} else if (newY > 416) {
newY = 416;
}
self.center = CGPointMake(newX,newY);
}
This is similar to the touch code that you wrote in chapter 14, and it isn’t worthy of a 
lot of additional commentary. Recall that 
locationInView:
B
gives a 
CGPoint
inter-
nal to the view’s coordinate system and needs to be converted 
C
into the global coor-
dinate system of the application.
In testing, we discovered that when run on an iPhone (but not in the iPhone Sim-
ulator) the result could sometimes be out of bounds, so you need to double-check 
your coordinates before you move the temporary image view.
18.4.3 The collage view
Last up, we have the 
collageView
itself, which is the background 
UIView
that needs to 
respond to the 
addPic:at:
message and draw onto the 
CALayer
with 
drawRect:
. The 
code to do this is shown in listing 18.5.
-(void)addPic:(UIImage *)newPic at:(CGRect)newLoc {  
if (! myPics) {
myPics = [[NSMutableArray alloc] initWithCapacity:0];
[myPics retain];
}
[myPics addObject:[NSDictionary dictionaryWithObjectsAndKeys:
newPic,@"picture",
[NSNumber numberWithFloat:newLoc.origin.x],@"xpoint",
[NSNumber numberWithFloat:newLoc.origin.y],@"ypoint",
[NSNumber numberWithFloat:newLoc.size.width],@"width",
[NSNumber numberWithFloat:newLoc.size.height],@"height",
nil]];
[self setNeedsDisplay];
Listing 18.4 A temporary image can be moved about by touches
Listing 18.5 A background view manages the low-level drawing once an image is set
Determines 
position in view
B
C
Calculates overall 
position
Saves into array
B
Licensed to Nick Wood <nwood888@yahoo.com>
Documents you may be interested
Documents you may be interested