Old 04-05-2009, 04:55 AM   #1 (permalink)
Zuner
 
badmoodguy88's Avatar
 
Join Date: Jun 2008
Posts: 72
badmoodguy88 is on a distinguished road
Question Low ram and Disposed Texture2d

I am trying to display a load of images. Because the ram is way to little to load everything into memory all at one time I am loading one image at a time as I display them and then immediately Disposing them.

right now I am using

Code:
            spriteBatch.Begin();

            if (Pic == 000)
            {
                if (Picture != null && !Picture.IsDisposed)
                    Picture.Dispose();
                Picture = Content.Load<Texture2D>("000");
            }
//the same thing over and over again
            if (Pic == 001)
            {
                if (Picture != null && !Picture.IsDisposed)
                    Picture.Dispose();
                Picture = Content.Load<Texture2D>("001");
//
//hundreds of pictures later
//

            Origin.X = ((Picture.Width) / 2);
            Origin.Y = ((Picture.Height) / 2);
            Drawarea.Width = (Picture.Width);
            Drawarea.Height = (Picture.Height);
            Drawarea.Location.Equals(Origin);
            Scale = Scaling[Zoom];
            Pos.X = ((Origin.X * Scale) + MoveX);
            Pos.Y = ((Origin.Y * Scale) + MoveY);

            spriteBatch.Draw(Picture, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);

            spriteBatch.End();
            }
Is there a better way I can go about this, so that I can later reload the images after I free them up from memory?

Right now it will load one by one 200+ images but it can only display each of them once.
Is there some thing else I can dispose instead?

Is there some thing I can reload or remake that will let me reload these images with out restarting the whole program?

Here is more of the code to clear up what is going on with the spritebatch.
Code:
        Vector2 Pos;
        int MoveX = 0;
        int MoveY = 0;
        int Pic = -1;
        Rectangle Drawarea;

        float Rotation = 0f;
        Vector2 Origin;
        int Zoom = 0;
        float[] Scaling = {0.5f, 0.75f, 1f};
        float Scale = 0f;
        float LayerDepth = 0.1f;



badmoodguy88 is offline   Reply With Quote

Advertisement [Remove Advertisement]
Old 04-05-2009, 11:09 AM   #2 (permalink)
Experienced Member
 
Tiptup300's Avatar
 
Join Date: Apr 2008
Posts: 808
Tiptup300 has disabled reputation
Default

....

Ever thought of looping....

Quote:
for(int x = 0; x < Pictures.Count; x++)
{
if (Pictures[x] != null && !Pictures[x].IsDisposed)
Pictures[x].Dispose();
Pictures[x] = Content.Load<Texture2D>("000");
}
or something. What are you doing?



Tiptup300 is offline   Reply With Quote
Old 04-05-2009, 07:15 PM   #3 (permalink)
Zuner
 
badmoodguy88's Avatar
 
Join Date: Jun 2008
Posts: 72
badmoodguy88 is on a distinguished road
Default

I don't know how to use your code. I am not familiar with loops yet and I could not figure out how to list Pictures in the public class.

What probably confused you is that in my code Picture is a Texture2D Picture; I knew there was a way to load images from the media library but I did not know it was called Picture because that is not what I am looking at doing right now.

The idea is that it would be nice if I could have multiple versions of this same program; each one containing a complete work of fiction in the form of a picture for every page. The way I have the code it would be easy to batch rename and re-size large number of images, add them to the content folder and then cut down the part of the code that loads the images to the number that are in the pdf, book, comic, whatever and then deploy. There are a number of reasons why I find this appealing.

This program is loading a large image and then waiting for a button to bump the Pic value up one. As soon as it is loaded and drawn the image is Disposed so that if I even go to the zune guide it will vanish but the main problem is that I can not move the Pic value back. It just keeps displaying the current picture but interestingly enough if the two pictures had very different resolutions you can see the current picture distorted to fit the dimensions of the old picture.

Still my main and only problem is reloading images after I have disposed them. I tried to just change what a image is by reusing the same texture2d as I load different Content but wile the image does change it does not free up any ram.

I could try loading the content and then having the game save the image as binary data in a text file but i would probably then have the same problem with freeing up ram with the text file once it loads. Plus it would take huge amounts of time to load/save.

I think I could have it try to load images kept in a specific location in the media library but I would need to manually add them to the pictures folder myself using the zune unlocker app (I have done it in the past but it is a pain to do and even more so to delete). The reason I need to not use the zune to add them is that it re sizes large images.

The best Idea I have yet it to have about 10 images at any one time. And to just keep disposing them as I go along but only when there are 10 others that are newer. But this is still not ideal.

I thought I could reload the images in a new spritebatch but that makes no difference. I was hoping that I was just not disposing of the right thing.



badmoodguy88 is offline   Reply With Quote
Old 04-05-2009, 08:29 PM   #4 (permalink)
Experienced Member
 
Tiptup300's Avatar
 
Join Date: Apr 2008
Posts: 808
Tiptup300 has disabled reputation
Default

Quote:
Originally Posted by badmoodguy88 View Post
I don't know how to use your code. I am not familiar with loops yet and I could not figure out how to list Pictures in the public class.

What probably confused you is that in my code Picture is a Texture2D Picture; I knew there was a way to load images from the media library but I did not know it was called Picture because that is not what I am looking at doing right now.

The idea is that it would be nice if I could have multiple versions of this same program; each one containing a complete work of fiction in the form of a picture for every page. The way I have the code it would be easy to batch rename and re-size large number of images, add them to the content folder and then cut down the part of the code that loads the images to the number that are in the pdf, book, comic, whatever and then deploy. There are a number of reasons why I find this appealing.

This program is loading a large image and then waiting for a button to bump the Pic value up one. As soon as it is loaded and drawn the image is Disposed so that if I even go to the zune guide it will vanish but the main problem is that I can not move the Pic value back. It just keeps displaying the current picture but interestingly enough if the two pictures had very different resolutions you can see the current picture distorted to fit the dimensions of the old picture.

Still my main and only problem is reloading images after I have disposed them. I tried to just change what a image is by reusing the same texture2d as I load different Content but wile the image does change it does not free up any ram.

I could try loading the content and then having the game save the image as binary data in a text file but i would probably then have the same problem with freeing up ram with the text file once it loads. Plus it would take huge amounts of time to load/save.

I think I could have it try to load images kept in a specific location in the media library but I would need to manually add them to the pictures folder myself using the zune unlocker app (I have done it in the past but it is a pain to do and even more so to delete). The reason I need to not use the zune to add them is that it re sizes large images.

The best Idea I have yet it to have about 10 images at any one time. And to just keep disposing them as I go along but only when there are 10 others that are newer. But this is still not ideal.

I thought I could reload the images in a new spritebatch but that makes no difference. I was hoping that I was just not disposing of the right thing.
O.o

... I think you.......

um....

...

*sigh*

...

Okay....

err....well, look at it this way, Actually, I'm still confused.

So your applicatoin loads a bunch of images, draws them instantly, then does nothing?

I'm not 100% sure what you're trying to do, but I'm 100% sure you're doing it wrong.



Tiptup300 is offline   Reply With Quote
Old 04-06-2009, 02:27 PM   #5 (permalink)
Zuner
 
badmoodguy88's Avatar
 
Join Date: Jun 2008
Posts: 72
badmoodguy88 is on a distinguished road
Default

lol maybe, I would not be in Basic Coding if I was not doing something wrong.

Thank you for taking the time to try to make sense of this.

The program it draws images as soon as it loads them,

but it only loads them one at a time, and only when I press a button, so that the program loads the next picture.

And as soon as it draws them it deletes them but that is sort of ok because the Scale and position (Pos) values can still be manipulated to move the image in and out and side to side. The disposed image actually stays on the screen until any thing else is drawn, and then it is gone. So image 1 stays up until I press A and then image 2 is drawn.

Right now I working with something that always deletes the image only after 8 newer images have been loaded so that I can back track 8 pages/images and then forward again. But I can still not back track more than 8 pages. If I have some thing like the Shadow Run core rule book (cyberpunk ftw), or a text book, then I am going to want to go back more than 8 pages with out restarting. Being able to back track 8 pages is enough for things that you read cover to cover, like graphic novels, books, and manga.

based on the assumption that is is more confusing to have to little information,
Brace for "thousands of lines of code"

Code:
        GraphicsDeviceManager graphics;
        SpriteBatch spritebatch;
        Texture2D Picture0, Picture1, Picture2, Picture3, Picture4, Picture5, Picture6, Picture7, Picture8, Picture9;       
        Vector2 Pos;
        int MoveX = 0;
        int MoveY = 0;
        //Pic is used a lot. it is basically the highest number image that should be loaded.
        int Pic = 0;
        //this is used to display older images that have not been disposed of yet.
        int Curentpic = 0;
        //these are Parameters involved with the Draw method I used.
        Rectangle Drawarea;
        float Rotation = 0f;
        Vector2 Origin;
        int Zoom = 0;
        float[] Scaling = {0.5f, 0.75f, 1f};
        float Scale = 0f;
        float LayerDepth = 0.1f;

        //this is used in the loading of images. There is one for every image and they correspond to the names of the .png images in the content folder.
        String[] book = {
            "000", "001", "002", "003", "004", "005", "006", "007", "008", "009",
            "010", "011", "012", "013", "014", "015", "016", "017", "018", "019",
            "020", "021", "022", "023", "024", "025", "026", "027", "028", "029",.... 
        //this goes on for like 300 strings...

        //these are used so that holding some buttons down dose nothing
        bool Pressbackonce = true;
        bool PressAonce = true;
        bool PressBonce = true;
///
///Later in the code

Code:
///This is all I load at the start of the game
        protected override void LoadContent()
        {  
            spritebatch = new SpriteBatch(GraphicsDevice);
        }
///
///Still later on
///These are all the buttons. Skip it if you are not interested.
Code:
        protected override void Update(GameTime gameTime)
        {
                //This is the button that changes the Curentpic so that older images are show.
                if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                {
                    if (Pressbackonce == true)
                    {
                        if (Curentpic < 8 && Curentpic < Pic)
                        {
                            Curentpic += 1;
                        }
                    }
                    Pressbackonce = false;
                }
                if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Released)
                {
                    Pressbackonce = true;
                }
                // This is the zoom. It zooms pictures in.                
                if (GamePad.GetState(PlayerIndex.One).Buttons.A == ButtonState.Pressed)
                {
                    if (PressAonce == true)
                    {
                        if (PressAonce == true)
                        {
                            if (Zoom < 2)
                            {
                                Zoom += 1;
                            }
                            else
                            {
                                Zoom = 0;
                            }
                            Updatepic = true;
                            PressAonce = false;
                        }
                    }
                }
                if (GamePad.GetState(PlayerIndex.One).Buttons.A == ButtonState.Released)
                {
                    PressAonce = true;
                }
//
//This moves the "pages" forward. It bumps up the value that loads and
//draws images. It only does this when it is displaying the most resent image.
//otherwise it just makes the game show the next most resent image.
                if (GamePad.GetState(PlayerIndex.One).Buttons.B == ButtonState.Pressed)
                {
                    if (PressBonce == true)
                    {
                        if (Curentpic > 0)
                        {
                            Curentpic -= 1;
                        }
                        else
                        {
                            if (Pic < 219)
                            {
                                Pic += 1;
                            }
                            else
                            {
                                Pic = 0;
                            }
                        }
                        PressBonce = false;
                    }
                }
                if (GamePad.GetState(PlayerIndex.One).Buttons.B == ButtonState.Released)
                {
                    PressBonce = true;
                }

               //
               //These move the image side to side and up and down.
               //Later on they will have some if statements that will keep 
               //the image from going to far in any direction but I have not
               //figured out the right math for it yet.
                if (GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed)
                {
                    MoveX += 6;
                }
                if (GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed)
                {
                    MoveX -= 6;
                }
                if (GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed)
                {
                    MoveY += 6;
                }
                if (GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed)
                {
                    MoveY -= 6;
                }
}
base.Update(gameTime);
        }

This is the important one.
Code:
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);

            spritebatch.Begin();

            if (Pic >= 0)
            {
                Picture0 = Content.Load<Texture2D>(book[Pic]);
            }
            if (Pic >= 1)
            {
                Picture1 = Content.Load<Texture2D>(book[Pic -1]);
                
            }
            if (Pic >= 2)
            {
                Picture2 = Content.Load<Texture2D>(book[Pic -2]);
                
            }
            if (Pic >= 3)
            {
                Picture3 = Content.Load<Texture2D>(book[Pic -3]);
                
            }
            if (Pic >= 4)
            {
                Picture4 = Content.Load<Texture2D>(book[Pic -4]);
                
            }
            if (Pic >= 5)
            {
                Picture5 = Content.Load<Texture2D>(book[Pic -5]);
                
            }
            if (Pic >= 6)
            {
                Picture6 = Content.Load<Texture2D>(book[Pic -6]);
                
            }
            if (Pic >= 7)
            {
                Picture7 = Content.Load<Texture2D>(book[Pic -7]);
                
            }
            if (Pic >= 8)
            {
                Picture8 = Content.Load<Texture2D>(book[Pic -8]);
                
            }
            //
            //This is what gets rid of old images. When it is 9 images below the
            //most resent image it is loaded as picture 9 and then immediately
            //disposed.
            //
            if (Pic >= 9)
            {
                Picture9 = Content.Load<Texture2D>(book[Pic -9]);
                if (Picture9 != null && !Picture9.IsDisposed) Picture9.Dispose();
                
            }
            ///
            /// This mess here could be put elsewhere but I have not gotten
           ///around to it.
           ///
            Origin.X = ((Picture0.Width) / 2);
            Origin.Y = ((Picture0.Height) / 2);
            Drawarea.Width = (Picture0.Width);
            Drawarea.Height = (Picture0.Height);
            Drawarea.Location.Equals(Origin);
            Scale = Scaling[Zoom];
            Pos.X = ((Origin.X * Scale) + MoveX);
            Pos.Y = ((Origin.Y * Scale) + MoveY);

            //Current Pic == 0 is the most resent image.
            if (Curentpic == 0)
            {
                spritebatch.Draw(Picture0, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            //
            // All these other Currentpic values are for showing older images 
            //Notice there is no Currentpic # 9.
           // 
            if (Curentpic == 1)
            {
                spritebatch.Draw(Picture1, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 2)
            {
                spritebatch.Draw(Picture2, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 3)
            {
                spritebatch.Draw(Picture3, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 4)
            {
                spritebatch.Draw(Picture4, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 5)
            {
                spritebatch.Draw(Picture5, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 6)
            {
                spritebatch.Draw(Picture6, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 7)
            {
                spritebatch.Draw(Picture7, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            if (Curentpic == 8)
            {
                spritebatch.Draw(Picture8, Pos, Drawarea, Color.White, Rotation, Origin, Scale, SpriteEffects.None, LayerDepth);
            }
            spritebatch.End();

            base.Draw(gameTime);
        }
EDIT: Hmm, this post was probably unnecessary

I really just need to know what lengths I would need to got to, in order to get an image back after I have disposed it.

Last edited by Bolt; 04-06-2009 at 02:45 PM. Reason: Double post, ffr use edit



badmoodguy88 is offline   Reply With Quote
Old 04-06-2009, 02:51 PM   #6 (permalink)
zB Programmer
Member
 
DiNoGames's Avatar
 
Join Date: May 2008
Location: Bremen, germany
Posts: 582
DiNoGames is a name known to allDiNoGames is a name known to allDiNoGames is a name known to allDiNoGames is a name known to all
Send a message via Skype™ to DiNoGames
Default

The post was not unnecessary. You showed us that you do it in a complete circumstancial way.
All your if (Pic bla bla bla can be compressed to one or two lines of code instead of your hundreds lines of code.
Your whole program (I think I know what you want to do) can be written in about 50 lines of code in total.

I need to sleep now because its late here in germany. If noone of your US-guys help you until tomorrow, I could come up with a quick mockup of the program you want to do. Its only a few minutes but right now I need to hit the sack...
__________________

Valgard's Fate Blog







DiNoGames is offline   Reply With Quote
Old 04-06-2009, 09:19 PM   #7 (permalink)
Purger of Ignorance
zB Programmer
Retired Staff
Expert Zuner
 
Netrix's Avatar
 
Join Date: Jun 2008
Location: In my own world
Posts: 2,805
Netrix is a name known to allNetrix is a name known to allNetrix is a name known to allNetrix is a name known to allNetrix is a name known to all
Send a message via MSN to Netrix
Default

If you are constantly drawing the images, it is not a good idea to load them each time you want to display them. It will be very slow and it will quickly drain the Zune's battery. The images that you are trying to load would have to be very large in order to use up the allowed amount of RAM.
__________________
"Against logic there is no armor like ignorance." - Laurence J. Peter

Solitaire for your Zune! http://www.zuneboards.com/forums/dow...ne-v2-0-a.html

Zune Book Reader! http://www.zuneboards.com/forums/app...ew-thread.html




Netrix is offline   Reply With Quote
Old 04-06-2009, 10:40 PM   #8 (permalink)
you lost the game.
zB Programmer
Moderator
Elite Zuner
 
itsnotabigtruck's Avatar
 
Join Date: May 2008
Posts: 2,435
itsnotabigtruck has much to be proud ofitsnotabigtruck has much to be proud ofitsnotabigtruck has much to be proud ofitsnotabigtruck has much to be proud ofitsnotabigtruck has much to be proud ofitsnotabigtruck has much to be proud ofitsnotabigtruck has much to be proud of
Default

Yeah, unless you're doing something incredibly sophisticated, you're better off loading everything up front and going from there. Texture RAM only starts mattering when you're doing something of Valgard's Fate proportions.
__________________

 signature by vettexl




itsnotabigtruck is offline   Reply With Quote
Old 04-06-2009, 11:30 PM   #9 (permalink)
Experienced Member
 
Tiptup300's Avatar
 
Join Date: Apr 2008
Posts: 808
Tiptup300 has disabled reputation
Default

I think he's making an app that loads all your images on the zune and displays them as a very fast slideshow. In which case, your ram would run out.



Tiptup300 is offline   Reply With Quote
Old 04-06-2009, 11:55 PM   #10 (permalink)
zB Programmer
Member
 
DiNoGames's Avatar
 
Join Date: May 2008
Location: Bremen, germany
Posts: 582
DiNoGames is a name known to allDiNoGames is a name known to allDiNoGames is a name known to allDiNoGames is a name known to all
Send a message via Skype™ to DiNoGames
Default

As far as I understand his project, he wants to achieve something like a comic book reader. He just needs one image at a time and when the user has finished reading the page he can press a button to swap to the next or previous page.

I guess he also wants some kind of sliding around on the page if it is bigger than the Zunes screen (I guess no stretching is wanted due to quality issues).

All in all this is a very very simple application if I understand it right. So the question to badmoodyguy88 is: Is this what you want?
I want to know it before I start coding to help you Don't like to do things noone wants *lol*
__________________

Valgard's Fate Blog







DiNoGames is offline   Reply With Quote
Old 04-08-2009, 11:11 AM   #11 (permalink)
Zuner
 
badmoodguy88's Avatar
 
Join Date: Jun 2008
Posts: 72
badmoodguy88 is on a distinguished road
Default

Yes I want a comic book reader. I guess I am reading this right, if you are interested in making one that would be awesome. I for one would use it if it worked well.

Because I can not help my self from posting an enormous post here is more words.

When zoomed in the zune image scroll speed is annoyingly slow and it gets increasingly slower as you use larger and larger images. The resolution needed to read all font sizes on all pages is a little less than 600 pixels wide. 528 is twice 240 (zune width) plus a 10% over lap.

If you look at the zune picture viewer it moves in relatively large jumps fallowed by a very slight pause. This is probably to prevent the visual tearing that you get in my code. It is purity noticeable but not a big deal.

It would be nice if you could just scroll from one image to the next. Vertical scrolling would work better because it would work the same regardless of a left to right (Western/European) or right to left (Japanese) ordering of comic panels.



badmoodguy88 is offline   Reply With Quote
Old 04-08-2009, 11:58 AM   #12 (permalink)
Experienced Member
 
Tiptup300's Avatar
 
Join Date: Apr 2008
Posts: 808
Tiptup300 has disabled reputation
Default

What I would reccommend is working with C# a little more. Google things on "loops", "arrays", ... and some other things. You seriously have to learn the basics.

EDIT: It appears I touched on loops slightly in my tut: http://www.zuneboards.com/forums/dev...ogramming.html

but yeah...



Tiptup300 is offline   Reply With Quote
Old 04-08-2009, 12:17 PM   #13 (permalink)
lost in paradise with rae
Support Team
Moderator
Expert Zuner
 
Red Sky's Avatar
 
Join Date: Nov 2007
Location: Pennsylvania
Posts: 2,662
Red Sky is just really niceRed Sky is just really niceRed Sky is just really nice
Send a message via MSN to Red Sky
Default

The reason it gets slower and slower is probably because it only moves a certain number of pixels per move operation. Instead, you should make it move a certain percentage of the total image size, which you could accomplish by dividing, for example, the image width by 10 or something along those lines. You would do the same for the height.





Red Sky is offline   Reply With Quote
Old 04-09-2009, 01:11 PM   #14 (permalink)
Purger of Ignorance
zB Programmer
Retired Staff
Expert Zuner
 
Netrix's Avatar
 
Join Date: Jun 2008
Location: In my own world
Posts: 2,805
Netrix is a name known to allNetrix is a name known to allNetrix is a name known to allNetrix is a name known to allNetrix is a name known to all
Send a message via MSN to Netrix
Default

Changing the position of large images should take about the same time as changing the position of small images. I did that with an image with dimensions 5000 x 2000, and of course there was tearing since the image was being moved quickly, but that would happen with small images as well.
__________________
"Against logic there is no armor like ignorance." - Laurence J. Peter

Solitaire for your Zune! http://www.zuneboards.com/forums/dow...ne-v2-0-a.html

Zune Book Reader! http://www.zuneboards.com/forums/app...ew-thread.html




Netrix is offline   Reply With Quote
Old 04-09-2009, 03:45 PM   #15 (permalink)
Jr. Zuner
 
catnat109's Avatar
 
Join Date: Apr 2009
Location: Washington
Posts: 42
catnat109 is on a distinguished road
Default

Array it.

use a Array of Textures. You might get a overload error though. I'm not sure.
__________________





catnat109 is offline   Reply With Quote
Old 04-09-2009, 08:50 PM   #16 (permalink)
Zuner
 
badmoodguy88's Avatar
 
Join Date: Jun 2008
Posts: 72
badmoodguy88 is on a distinguished road
Default

I guess my last post was confusing. I was mostly describing what was wrong with the picture viewer that comes with zunes.

There is a max sized image that the zune pc software is supposed to import onto the zune hardware. You can get around this as I said, but the makers of the firmware did not have those larger images in mind when they wrote it. I figure that there is just a lot going on in the back ground that is not there when you are running a game, because the zune is of course plenty powerful enough to move around an average sized picture.

You can get pictures to large for it to draw at all though. They are way bigger than you would ever normally deal with though. I tried stringing together all the pictures in a comic one time just so I would not need to zoom out between each page turn. So the image was thousands of pixels tall and it would not open in the zune. A version with fewer pages per image did open and did zoom in by the same amount as a normal image would. That is to say before it is zoomed in it is re sized to fit the window, and when zoomed it is at its actual size.



badmoodguy88 is offline   Reply With Quote
Old 04-10-2009, 04:58 PM   #17 (permalink)
zB Programmer
Member
 
DiNoGames's Avatar
 
Join Date: May 2008
Location: Bremen, germany
Posts: 582
DiNoGames is a name known to allDiNoGames is a name known to allDiNoGames is a name known to allDiNoGames is a name known to all
Send a message via Skype™ to DiNoGames
Default

badmoodguy, can you provide sample comic book pages? If I had them, I could make the viewer in a way that it fits your desires.
__________________

Valgard's Fate Blog







DiNoGames is offline   Reply With Quote
Old 04-11-2009, 01:37 AM   #18 (permalink)
Zuner
 
badmoodguy88's Avatar
 
Join Date: Jun 2008
Posts: 72
badmoodguy88 is on a distinguished road
Default

There you go kind sir.
Download link
Comic.rar

Here are some assorted items copied straight from my zune.
The comic is actually rotated because, with the way the comic panels are typically arranged on a page, rotating the image happens to be a better way to view comics on the zune screen. There is also a few pages from a two column book oriented normally. Lastly is some other oddly shaped comics that might be a problem.

Also I just now found out that the zAuto-Unlocker does not work with the latest soft ware. I tried to just unlock the zune and copy my picture folder but found out this is no longer possible.

Last edited by badmoodguy88; 04-14-2009 at 01:37 AM.



badmoodguy88 is offline   Reply With Quote
Reply

Bookmarks

Thread Tools